1
resposta

[Dúvida] Dúvida no operador lógico

SELECT * FROM tabelaclientes WHERE nome_cliente > 'C';

Quando faço a consulta, ele retorna também os nomes começados com a letra C. Fui atrás de informações e verifiquei que para strings, o banco de dados entede que o >'C' começa a contar como Ca, Cb, Cc etc...

O correto então não seria declarar SELECT * FROM tabelaclientes WHERE nome_cliente >= 'C'; ? Desta forma não teríamos uma visão mais clara de como estão sendo utilizados os operadores lógicos?

1 resposta

Olá Thiago, tudo bem?

Quando utilizamos SELECT * FROM tabelaclientes WHERE nome_cliente > 'C';, o SQL realmente considera qualquer string que seja alfabeticamente maior que 'C', o que inclui nomes que começam com 'Ca', 'Cb', etc. Isso significa que ele não exclui aqueles que começam com 'C', apenas o próprio 'C'.

Se o seu objetivo for incluir também os nomes que sejam exatamente 'C', você deve usar o operador >=, como mencionou. Assim, o comando ficaria:

SELECT * FROM tabelaclientes WHERE nome_cliente >= 'C';

No caso do nosso banco de dados, ambas as consultas retornarão o mesmo resultado: 24 nomes. No entanto, se houvesse algum nome exatamente igual a 'C', ele só seria retornado na consulta com >=, mas não apareceria na consulta com apenas >.

Espero ter esclarecido.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado