我在Oracle和Posterre中运行下面的查询,两者都显示了与值的排序有关的不同输出。
with test as (
select 'Summary-Account by User (Using Contact ID)' col1 from dual
union all
select 'Summary-Account by User by Client by Day (Using Contact ID)' col1 from dual
)
select * from test
order by col1 desc;
字符串
下面是Oracle One
x1c 0d1x的数据
波斯特格雷斯
with test as (
select 'Summary-Account by User (Using Contact ID)' col1
union all
select 'Summary-Account by User by Client by Day (Using Contact ID)' col1
)
select * from test
order by col1 desc;
型
的
Oracle排序规则为AL 32 UTF8,邮政总局的LC_CTYPS为en_US.UTF-8
从数据库的行为来看,这两个版本看起来是相同的。如何解决这个问题?
我读过一些关于POSIX和C的stackoverflow的帖子,在把查询顺序改为**order by col 1 collate“C”desc之后;**结果与Oracle输出相符。
有没有办法永久地应用它?
1条答案
按热度按时间lzfw57am1#
AL32UTF8
不是排序规则,而是编码(字符集)。Oracle默认使用“二进制排序规则”,这对应于PostgreSQL中的
C
或POSIX
排序规则。你有几个选项可以在PostgreSQL中得到类似的结果:
LOCALE "C"
创建数据库"C"
排序规则的列:字符串
COLLATE
子句:型