oracle中字符串比较的问题

Vis*_*hal 3 sql oracle

我正在阅读oracle的基础知识并且遇到了奇怪的声明.我不知道它有多少真实.

声明说

"字符串值'2'大于字符串值'100'.字符'1'小于字符'10'."

请注意上述主题.我知道必须使用ASCII值进行内部比较.我正在寻求一些很好的逻辑解释.

lc.*_*lc. 6

这意味着被视为字符串的数字不按数字顺序排序,而是按词汇顺序排序,这与单词在字典中排序的方式相同.也就是说,从左侧一次一个地比较字符.

在您的第一个示例中,"2"大于"100",因为"2"与"1"进行比较并发现更大.将其与字典中"C"和"BAA"的顺序进行比较.

在第二个例子中,"1"小于"10",因为"1"完全匹配"10"左侧的"1",但"10"在匹配后有字符.因此它更大.再次,将其与字典中"B"和"BA"的排序进行比较.