询问
select 'T' union all select 'Z' order by 1
退货
Z T
但是正确的顺序应该是
T Z
尝试了3种不同的操作系统
数据库设置为:
Collation: et_EE.UTF-8 Character type: et_EE.UTF-8
如何解决这个问题?
更新
使用以下数据库创建数据库
CREATE DATABASE mydb WITH TEMPLATE=template0 OWNER=mydb_owner ENCODING='UNICODE'
在所有情况下,操作系统语言环境均为爱沙尼亚语,因此在爱沙尼亚语语言环境中创建了数据库。
select 'Z' collate "et_EE" union all select 'S' collate "et_EE" order by 1
返回正确的顺序:
S Z
但
select 'Z' collate "et_EE" union all select 'T' collate "et_EE" order by 1
如答案中所述,返回无效顺序:
原始SQL没什么问题。
之所以无法使用预期的方式,是因为您使用的是爱沙尼亚语言环境,但是爱沙尼亚的整理规则要求“ Z”在“ T”之前。
您可以使用其他排序规则,也可以在en_US.UTF-8语言环境中创建数据库。