所以我对SQL(以及一般的脚本/编码)非常陌生,这来自书中的一个例子,但不幸的是,他们决定不会有任何关于这个查询的问题,并忽略了在查询末尾扩展">"
以下是有问题的查询:
SELECT *
FROM easy_drinks
WHERE main > 'soda';
以下是一些查询的粘贴框,希望能提供所需的视角:http://pastebin.com/xfJQsBvU
粘贴DESC easy_drinks:http://pastebin.com/LZZPhk6Z
我只是对查询末尾的">"是如何工作的感到困惑,因为main存储为VARCHAR,而"soda"绝对不是一个可以与另一个整数进行比较的整数。然而,正如您在第一个pastebin中看到的,查询成功完成。为什么MySQL不返回错误?使用'>'和'<'的不同查询背后的模式是什么?
它可能正在进行字典排序。
这类似于你或我在字典中排列单词的方式。但是,请注意,它可能不会像您期望的那样处理数字。
您经常会在字符串上找到>-关系,通常用于字母顺序,但它当然取决于实现,并且可能会有所不同,尤其是对于不同的语言/编码或大小写问题。