Oracle11g 甲骨文-使用带字母的Between-Between';A';和';C';

Oracle11g 甲骨文-使用带字母的Between-Between';A';和';C';,oracle11g,between,letter,Oracle11g,Between,Letter,这种怀疑是非常基本的,然而,在阅读了一个给定问题的答案后,我感到相当困惑(我不知道为什么,因为这是一个简单的主题) 考虑以下基本查询: SELECT * FROM emp WHERE ename BETWEEN ‘A’ AND ‘C’ 返回的员工姓名将是以A和B开头的员工,解释如下: 这里,使用 运算符之间,这相当于ename>='A'和ename'C' 如果在解释中我们有这样一句话:ename小于或等于C,为什么Clark被认为大于C 谢谢。因为当你按字母顺序排序时 Constant Cla

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

考虑以下基本查询:

SELECT * FROM emp WHERE ename BETWEEN ‘A’ AND ‘C’
返回的员工姓名将是以A和B开头的员工,解释如下:

这里,使用 运算符之间,这相当于ename>='A'和ename'C'

如果在解释中我们有这样一句话:ename小于或等于C,为什么Clark被认为大于C


谢谢。

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

Constant Clark C Claude 
你会得到

C Clark Claude Constant 
所以

C
有关更正式的解释,请参见,其实质是(我的重点):

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


如果在解释中我们有这样一句话:ename小于或等于“C”,为什么认为Clark大于“C”

这里有一件事要考虑。因为显而易见的原因,我们有艾伦,布莱克,克拉克,亚当斯,A,C.按字母顺序排序,我们有

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


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

谢谢,有趣的是,我在一些练习中应用了正确的排序,就像你提到的那样,但由于某种原因,中间的排序让我有点困惑,再次感谢。编辑:太糟糕了,我不能将答案标记为有用(还没有足够的声誉)。欢迎使用堆栈溢出。不过没必要大喊大叫。
C < Clark < Claude < Constant