kethellen Postado Outubro 13, 2008 Denunciar Share Postado Outubro 13, 2008 (editado) Olá pessoal alguém poderia me ajudar me dizendo qual o codigo SQL que posso fazer uma consulta tipo.Eu tenho uma coluna ISBN onde tem muitos dados, ou seja, milhões de informações onde não tem como eu saber se todos estão num único formato. Então preciso de um código SQL de consulta para identificar isso. Exemplo: ISBN 12-125-25612.356.96358696333Desde já agradeço que puder ajudar. Editado Outubro 14, 2008 por kethellen Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Outubro 13, 2008 Denunciar Share Postado Outubro 13, 2008 Oi 'kethellen' O manual do Mysql na versão 4.1 capítulo 6 tem todas as funções necessárias para executar o que você deseja. Link para o comentário Compartilhar em outros sites More sharing options...
0 kethellen Postado Outubro 13, 2008 Autor Denunciar Share Postado Outubro 13, 2008 Oi 'kethellen' O manual do Mysql na versão 4.1 capítulo 6 tem todas as funções necessárias para executar o que você deseja.Ok Denis é que tava precisando meio urgente por isso não li o manual, sei que tem muita gente experiente e que num instante poderia me informar o código, por isso postei, você sabe marinheiro de primeira viagem é assim mesmo. Link para o comentário Compartilhar em outros sites More sharing options...
0 jothaz Postado Outubro 13, 2008 Denunciar Share Postado Outubro 13, 2008 O exemplo é para o SQL Sever mas se não me engano o MySQL tb temdeclare @tab table (cod varchar(10)) insert into @tab (cod) values ('12-125-256') insert into @tab (cod) values ('12.356.963') insert into @tab (cod) values ('58696333') insert into @tab (cod) values ('586.963.33') select * from @tab where charindex('-', cod) > 0 or charindex('.', cod) > 0 or charindex(';', cod) > 0 Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Outubro 13, 2008 Denunciar Share Postado Outubro 13, 2008 Veja o código.SELECT IF(LOCATE('-',ISBN)<>0, REPLACE(ISBN, '-', ''), IF(LOCATE('.', ISBN)<>0, REPLACE(ISBN, '.', ''), ISBN) AS ISBN FROM minhatabelaREPLACE(str,da_str,para_str)Retorna a string str com todas ocorrências da string da_str substituida pela string para_str:mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');-> 'WwWwWw.mysql.com'Como falei bastava consultar o manual. Link para o comentário Compartilhar em outros sites More sharing options...
0 kethellen Postado Outubro 14, 2008 Autor Denunciar Share Postado Outubro 14, 2008 Denis,Testei o seu código e o mesmo faz com que todos os códigos ISBN fiquem num formato único na consulta, os mesmos ficaram sem hífen e sem o ponto. Mas Denis, acho que talvez eu tenha me expressado mau e você não entendeu direito o que eu queria realmente, testei seu codigo, o que eu quiz dizer foi simplesmente se teria como através de um código SQL mostrar aqueles dados que estão fora de um padrão. Um esta com ponto outro com hifen e outro sem hifen e sem ponto, ou seja, eu queria um codigo sql que não fosse o SELECT ISBN FROM LIVRO; pois imagine se tenho muitos e muitos dados para visualizar que tem dois ou três que estão diferentes dos outros é complicado. Link para o comentário Compartilhar em outros sites More sharing options...
0 kethellen Postado Outubro 14, 2008 Autor Denunciar Share Postado Outubro 14, 2008 E ai Denis será que tem jeito de formular uma consulta SQL pra isso?E ai Denis será que tem jeito de formular uma consulta SQL pra isso? Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Outubro 14, 2008 Denunciar Share Postado Outubro 14, 2008 Oi, 'kethellen' Claro que tem. As ferramentas estão todas ai. Mãos à obra.cada padrão é um padrão. eu estabeleci um e te enviei. agora é com você. Link para o comentário Compartilhar em outros sites More sharing options...
0 kethellen Postado Outubro 14, 2008 Autor Denunciar Share Postado Outubro 14, 2008 Oi, 'kethellen' Claro que tem. As ferramentas estão todas ai. Mãos à obra.cada padrão é um padrão. eu estabeleci um e te enviei. agora é com você.Denis da uma lidinha no que te falei na reposta anterior a pergunta que te fiz. Link para o comentário Compartilhar em outros sites More sharing options...
0 paulobergo Postado Outubro 14, 2008 Denunciar Share Postado Outubro 14, 2008 Oi kethellenVeja só... o que o Denis pode estar tentando dizer é que você precisaampliar os seus horizontes... muitos problemas podem ser resolvidosaté se você raciocinar com uma lógica fora da programação, dainformática...Veja mais: considerando esta lista de publicações:nome numero CARTÃO DE REFERENCIA MBASIC 85-216-0456-4 CARTÃO DE REFERENCIA TURBO BASIC 85-216-0567-6 WINDOWS ASSEMBLY LANGUAGE AND.. . 0-87930-474-X PADROES DE PROJETO............ .. 85-7307-610-0 CONSTRUINDO O FUTURO ATRAVES DA EDUCACAO 85-221-0331-3 Como pode ver acima, o código ISBN não tem um padrão (os códigos acima correspondem exatamente ao impresso nas respectivas publicações) Agora se você tem muitas informações erradas, já que em algum momento foi possível cadastrar códigos errados (veja a lista a seguir), o que pode ser feito? nome numero CARTÃO DE REFERENCIA MBASIC 8.521-604,56.4 CARTÃO DE REFERENCIA TURBO BASIC 85 21/605-67.6 WINDOWS ASSEMBLY LANGUAGE AND SYSTEMS 0-87, 930-474-X PADROES DE PROJETO............ .. 85-73 07-610-0 CONSTRUINDO O FUTURO ATRAVES DA EDUCACAO 8.5-2|21-03.31-3 Imagine se você não tivesse computador, não existisse SQL... o que você faria para "datilografar" a lista acima? depois disso, vamos para a informática... Medidas a serem adotadas: a) impedir que sejam cadastrados novos dados com caracteres inválidos e isso você pode fazer, por exemplo, usando javascript, php ou de outra forma, dependendo de como as tabelas são alimentadas: isto já a solução para você, que terá, então, que pesquisar, aprender como implementar e pode fazer isso procurando aqui mesmo dentre as centenas de códigos e scripts disponíveis... B) identificar os códigos que contém caracteres inválidos, ou seja, caracteres que não sejam 0-9, X e - Nisso, posso colaborar com estes exemplos; exemplo, caso o campo com o número ISBN tivesse apenas 5 caracteres - varchar(5)... entenda a lógica e desenvolva o resto... c) identificados os códigos, faça a correçao... use a solução da letra (B)... Esta query lista o nome e número das publicações com ISBN contendo caracteres inválidos. select nome, numero as numero_atual, concat(if(substring(numero, 1, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-"), substring(numero, 1, 1), "-"), if(substring(numero, 2, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-"), substring(numero, 2, 1), "-"), if(substring(numero, 3, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-"), substring(numero, 3, 1), "-"), if(substring(numero, 4, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-"), substring(numero, 4, 1), "-"), if(substring(numero, 5, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-"), substring(numero, 5, 1), "-") ) as numero_novo from `acme`.`publicacoes` where not( (substring(numero, 1, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-")) and (substring(numero, 2, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-")) and (substring(numero, 3, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-")) and (substring(numero, 4, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-")) and (substring(numero, 5, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-")) )Ok? então, mãos-à-obra! Link para o comentário Compartilhar em outros sites More sharing options...
0 kethellen Postado Outubro 14, 2008 Autor Denunciar Share Postado Outubro 14, 2008 Paulobergo eu entendi o que você e o Denis quizeram me passar que podem ter dados fora do padrão e para isso existem esses códigos que você me passaram para que sejam transformados e apresentados na consulta num só padrão.E isso eu sabia e entendi o que você me explicaram, mais eu acredito que me expressei mau em alguns momentos, o que realmente eu queria era só um codigo que mostrasse esses dados em minha base pra eu saber que eles estão fora do padrão tipo um SELECT ISBN FROM LIVRO; só que eu queria saber se existia um código um pouco mais especifico que apresentasse esses dados, pois o SELECT ISBN FROM LIVRO apresenta todos, mais dai se tiver muito e muitos dados não teria como eu descobrir no meio de tantos que dois ISBN estão usando um ponto e outro não esta usando nada. Entendeu? Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Outubro 14, 2008 Denunciar Share Postado Outubro 14, 2008 Oi, 'kethellen' Eu te dei um exemplo e você nem pensou em como usá-lo.Abaixo tem uma variação do exemplo que vai exibir o que você deseja.SELECT * FROM minhatabela WHERE LOCATE('-',ISBN)<>0 AND LOCATE('.', ISBN)<>0Vai listar apenas os registros sujos conforme o exemplo que você mostrou no post#1. Link para o comentário Compartilhar em outros sites More sharing options...
0 jothaz Postado Outubro 14, 2008 Denunciar Share Postado Outubro 14, 2008 você chegou a ver este exemplo?O exemplo é para o SQL Sever mas se não me engano o MySQL tb temdeclare @tab table (cod varchar(10)) insert into @tab (cod) values ('12-125-256') insert into @tab (cod) values ('12.356.963') insert into @tab (cod) values ('58696333') insert into @tab (cod) values ('586.963.33') select * from @tab where charindex('-', cod) > 0 or charindex('.', cod) > 0 or charindex(';', cod) > 0 Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
kethellen
Olá pessoal alguém poderia me ajudar me dizendo qual o codigo SQL que posso fazer uma consulta tipo.
Eu tenho uma coluna ISBN onde tem muitos dados, ou seja, milhões de informações onde não tem como eu saber se todos estão num único formato.
Então preciso de um código SQL de consulta para identificar isso.
Exemplo:
ISBN
12-125-256
12.356.963
58696333
Desde já agradeço que puder ajudar.
Editado por kethellenLink para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados