为什么'>'与SQL中的VARCHAR数据进行有效比较?

时间:2011-05-27 02:04:08

标签: mysql sql

所以我对SQL(以及一般的脚本/编码)都很陌生,这是本书中的一个例子,不幸的是,他们认为对这个查询没有任何疑问,忽略了扩大'>'在查询结束附近

以下是有问题的查询:

SELECT * 
  FROM easy_drinks 
 WHERE main > 'soda';

这是一个包含几个查询的pastebin,希望能提供所需的视角:http://pastebin.com/xfJQsBvU

DESC的粘贴easy_drinks:http://pastebin.com/LZZPhk6Z

我只是对'>'的看法感到困惑在查询结束附近工作,因为main存储为VARCHAR,'soda'绝对不是可以与另一个整数进行比较的整数。然而,正如您在第一个pastebin中看到的那样,查询成功完成。为什么MySQL没有返回错误,使用'>'的不同查询背后的模式是什么?和'<'?

2 个答案:

答案 0 :(得分:7)

它可能正在进行lexicographical ordering

它类似于你或我在字典中订购单词的方式。但请注意,may not handle numbers the way you'd expect

答案 1 :(得分:0)

您经常会找到>关于字符串的关系,主要用于字母顺序,但当然它是依赖于实现的,并且可以是不同的,特别是对于不同的语言/编码或大写和小写的问题。