gpt4 book ai didi

sql - Oracle order by upper(colname) 没有为非字符串列提供正确的结果

转载 作者:行者123 更新时间:2023-12-01 09:37:41 25 4
gpt4 key购买 nike

当oracle db中有一个非字符串(即:varchar,date)列(col1)时,如果我这样做:

select * from table order by col1 asc

它正确地订购。 (即对于日期,它从最旧到最新排序,对于数字,从最低到最高)但如果我这样做,select * from table order by upper(col1) asc排序不正确。

这种行为的原因是什么?

最佳答案

UPPER 接受一个字符串并返回一个字符串。如果 col1 不是字符串,则必须在执行函数之前将其隐式转换为字符串。然而,由于 UPPER 函数的输出是字符串,所以排序必须使用字符串排序语义,而不是 col1 的排序语义。如果 col1 是数字,例如

  • UPPER(9) 返回字符串 '9'
  • UPPER(10) 返回字符串 '10'

字符串“9”按字母顺序排在字符串“10”之后,这大概就是您看到的问题。

但是如果 col1 不是字符串,为什么还要将其转换为大写以便排序呢?

关于sql - Oracle order by upper(colname) 没有为非字符串列提供正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4947751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com