我目前正在学习 Oracle 10g 上的 SQL 命令。 我必须编写两个查询,并且由于某种原因两者都有相同的输出。您能否解释一下为什么以下两个查询会产生相同的输出?
SELECT GREATEST (4, 5, 17) FROM DUAL;
SELECT LEAST( '4', '5', '17') FROM DUAL;
两者产生相同的输出:
17
在第一个查询中:
SELECT GREATEST (4, 5, 17) FROM DUAL;
传递给
GREATEST()
的三个数字正在进行数字比较,因此17是最大的数字。然而,在第二个查询中:
SELECT LEAST( '4', '5', '17') FROM DUAL;
LEAST()
的三个参数是字符串,因此按字典顺序进行比较。在这种情况下,文本排序为 '17'
比 '4'
和 '5'
都“小于”,因为 1
排序在以 2 到 9 开头的字符串之前。