MySQL básico: retornar todos os campos quando id = 0[RESOLVIDO]
7 respostas
D
diegogeovani
Olá.
Não tenho experiência com banco de dados, mas agora tenho que mexer.
Tenho uma tabela MySQL chamada foo. Selecionei todos os campos existentes:
Criei uma consulta em função do campo id:
Em algum momento, esse “n” pode ser = 0. Como não existe id = 0 na tabela, o retorno é vazio.
Como fazer com que a query retorne todos os campos da tabela SOMENTE quando ‘%n%’ = 0 ?
Eu pensei nos comandos IF e WHEN, mas tive problemas de sintaxe quando os utilizei.
LIKE 430 quer dizer que se seu ID for 04301, 14302, 000430 etc. ele tem de retornar esses valores? Que esquisito.
D
diegogeovani
Bem pensado, entanglement.
Não, se os ids forem como estes que você citou(quando existe ‘0’ no id) então a consulta deve retornar o registro em questão.
Quero levar em conta apenas um caso: quando id = 0(nada mais). Como posso filtrar desta forma?
D
drsmachado
Retornar todos os campos quando id = 0?
SELECT col1, col2, col3, col4, colN FROM foo where id = '0';
Isso faz o que você quer.
Todos os campos quando id != 0
SELECT col1, col2, col3, col4, colN FROM foo where id <> '0';
Ah, não use “SELECT *”, isso onera demais o banco. Prefira o select como eu orientei, sempre indicando quais colunas deseja retornar na consulta.
D
diegogeovani
Valeu drsmachado, não tinha pensado nisso. Estes dois exemplos me servirão muito bem!
Obrigado à todos!
D
drsmachado
E a respeito do LIKE, ele é utilizado em cláusulas onde a pesquisa será feita em uma coluna cujo valor pode ser “parecido”. Aliás, eu prefiro que meus IDs e chaves primárias sejam de tipos numéricos, geralmente bigint ou big decimal.
E
entanglement
De modo geral, usar LIKE (principalmente esse que tem um “%” no começo e no fim da string) “mata” a sua aplicação.
É que normalmente ele é convertido para um “table scan”.
(Alguns bancos SQL convertem o “LIKE” que tem o “%” no fim apenas, para um “BETWEEN”, e isso é um pouco mais rápido, já que pode aproveitar eventuais índices que existam nessa coluna.)
Se você precisa fazer algo parecido com isso em um banco pequeno, com um milhão de registros, sua consulta vai ficar extremamente lenta (você precisa usar a solução de “full text search” do seu banco). Dentro da medida do possível, evite usar LIKE a torto e a direito.