Почему '>' является допустимым сравнением с данными VARCHAR в SQL? - PullRequest
4 голосов
/ 27 мая 2011

Так что я довольно новичок в SQL (и сценариях / кодировании в целом), и это из одного из примеров в книге, но они, к сожалению, решили, что не будет никаких вопросов по этому запросу ипренебрегли расширением '>' в конце запроса

Вот запрос, о котором идет речь:

SELECT * 
  FROM easy_drinks 
 WHERE main > 'soda';

Вот набор из нескольких запросов, который, надеюсь, даст необходимую перспективу: http://pastebin.com/xfJQsBvU

Вставка DESC easy_drinks: http://pastebin.com/LZZPhk6Z

Я просто не понимаю, как работает '>' в конце запроса, так как main хранится какVARCHAR и 'soda' - определенно не целое число, которое можно сравнить с другим целым числом.Тем не менее, как вы можете видеть из первой вставки, запрос завершается успешно.Почему MySQL не возвращает ошибку и каков шаблон различных запросов, использующих '>' и '<'? </p>

Ответы [ 2 ]

7 голосов
/ 27 мая 2011

Он, вероятно, выполняет лексикографический порядок .

Это похоже на то, как вы или я бы упорядочивали слова в словаре. Однако обратите внимание, что может не обрабатывать числа так, как вы ожидаете .

0 голосов
/ 27 мая 2011

Вы часто найдете> -отношения в строках, в основном используемые для алфавитного порядка, но, конечно, это зависит от реализации и может отличаться, особенно для разных языков / кодировок или для вопроса в верхнем и нижнем регистре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...