2

这个疑问是非常基本的,但是,在阅读给定问题的答案后,我感到相当困惑(我不知道为什么,因为它是一个简单的主题)。

考虑这个基本查询:

SELECT * FROM emp WHERE ename BETWEEN ‘A’ AND ‘C’

返回的员工姓名将是姓名以A和B开头的员工,解释如下:

在这里,使用 BETWEEN 运算符将字符列与字符串进行比较,这相当于 ename >= 'A' AND ename < = 'C'。名称 CLARK 将不包含在此查询中,因为 'CLARK' 是 > 'C'。

如果在解释中我们有这样的陈述: ename 小于或等于'C' ,为什么 Clark 会被认为大于'C'

谢谢你。

4

2 回答 2

2

因为当你按字母顺序排序时

Constant Clark C Claude 

你会得到

C Clark Claude Constant 

所以

C < Clark < Claude < Constant

有关更正式的解释,请参见Wikipedia ,本质是这样的(强调我的):

为了决定两个字符串中的哪一个按字母顺序排在第一位,首先比较它们的第一个字母。第一个字母出现在字母表中较早的字符串按字母顺序排在第一位。如果第一个字母相同,则比较第二个字母,依此类推,直到确定顺序。(如果一个字符串没有要比较的字母,则认为它在前;例如,“cart”在“carthorse”之前。)将一组字符串按字母顺序排列的结果是相同的单词在前字母被组合在一起,在这样的组中,前两个字母相同的单词被组合在一起,依此类推。

于 2013-03-07T00:32:23.573 回答
0

如果在解释中我们有这样的陈述: ename 小于或等于 'C' ,为什么 Clark 会被认为大于 'C' ?

这里需要考虑一件事。出于显而易见的原因,我们有 ALLEN、BLAKE、CLARK、ADAMS、A、C。按字母顺序排序我们有

亚当斯艾伦布莱克 C 克拉克

这就是为什么 CLARK 不属于该范围的原因,因为它位于 C 之后。

于 2017-05-29T19:12:16.407 回答