Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre o operador > com string

Fiquei curioso com um trecho do código e tentei pesquisar sobre, mas acabei não achando nada a respeito (acho que eu não soube pesquisar direito).

Mas minha dúvida é o seguinte. Porque se eu executo a seguinte query

SELECT * FROM teste WHERE numero > 200;

retorna todos os número maiores que 200, ou seja, o 200 não está incluso, no entanto se eu executo a seguinte query

SELECT * FROM teste WHERE nomes > 'C';

retorna todos os nomes que começam com a letra C pra frente?

Além de que se eu executar a query

SELECT * FROM teste WHERE nomes <= 'C';

retorna apenas o nomes com caracteres menores que C

2 respostas
solução!

Oii Pedro, como vai?

Quando utilizamos o operador > com números, como no seu exemplo SELECT * FROM teste WHERE numero > 200;, a consulta retorna todos os valores numéricos maiores que 200, excluindo o próprio 200, como você observou corretamente.

No entanto, quando aplicamos o mesmo operador a strings, como em SELECT * FROM teste WHERE nomes > 'C';, o comportamento é um pouco diferente devido à forma como o SQL lida com comparações de texto. Neste caso, o operador > compara os valores alfabeticamente. Portanto, a consulta retorna todos os nomes que, alfabeticamente, vêm depois de 'C'. Isso inclui nomes que começam com 'C' seguidos de qualquer outra letra (como 'Ca', 'Cb', etc.).

Da mesma forma, quando você executa SELECT * FROM teste WHERE nomes <= 'C';, a consulta retorna nomes que são alfabeticamente menores ou iguais a 'C'. Isso inclui nomes que começam com 'A', 'B' e 'C', mas não qualquer nome que comece com 'Ca', 'Cb', etc., pois esses são considerados maiores que 'C' sozinho.

A lógica por trás disso é que o SQL está comparando as strings caracter por caracter de acordo com a tabela ASCII (ou Unicode, dependendo da configuração do seu banco de dados). 'C' é diferente de 'Ca', e o SQL considera 'Ca' maior que 'C' porque após comparar o primeiro caracter e encontrar igualdade, ele move para o próximo caracter e encontra 'a', que não tem equivalente na string 'C' para comparação, tornando 'Ca' maior.

Espero que esta explicação tenha ajudado a esclarecer suas dúvidas!

Forte abraço e bons estudos :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

aaaah agora fez total sentido!! Muito obrigado :)