【发布时间】:2022-01-03 01:33:53
【问题描述】:
Oracle Database 19c 标准版 2 版本 19.0.0.0.0 - 生产
select letter from (
select 'A' as letter from dual union all
select 'Á' as letter from dual union all
select 'B' as letter from dual union all
select 'C' as letter from dual ) t
order by letter;
结果(还可以):
A
Á
B
C
但是有了这个
select listagg(letter,', ') within group (order by letter) from (
select 'A' as letter from dual union all
select 'Á' as letter from dual union all
select 'B' as letter from dual union all
select 'C' as letter from dual ) t;
结果字母顺序不同:
A, B, C, Á
后一种情况是不是一个简单的Oracle bug?
(关于 NLS,我没有说什么。我认为这些查询应该独立于 NLS 以相同的方式工作。)
更新:
澄清: 我在同一连接中的 SqlDeveloper 中一个接一个地运行这些查询。
NLS_SORT HUNGARIAN
NLS_COMP BINARY
(如果@MT0 的答案是解决方案,那么恕我直言,在简单的 order by 子句和 listagg 调用中使用不同的默认 NLS 设置是 oracle 中的一个错误。)
【问题讨论】:
-
请edit 提出问题并附上您的 NLS 设置(特别是
NLS_SORT和NLS_COMP)。