【发布时间】:2013-03-15 08:13:20
【问题描述】:
我是 postrges 新手,想对 varchar 类型的列进行排序。想用下面的例子来解释这个问题:
表名:testsorting
order name
1 b
2 B
3 a
4 a1
5 a11
6 a2
7 a20
8 A
9 a19
区分大小写的排序(在 postgres 中是默认的)给出:
select name from testsorting order by name;
A
B
a
a1
a11
a19
a2
a20
b
不区分大小写的排序给出:
按 UPPER(name) 从测试排序顺序中选择名称;
A
a
a1
a11
a19
a2
a20
B
b
如何在 postgres 中进行不区分大小写的字母数字排序以低于顺序:
a
A
a1
a2
a11
a19
a20
b
B
我不介意大写或小写的顺序,但顺序应该是“aAbB”或“AaBb”,而不应该是“ABab”
如果您在 postgres 中对此有任何解决方案,请提出建议。
【问题讨论】:
-
我正在添加一个平面:“区分大小写的排序(在 postgres 中是默认设置)”,这并不完全正确。 default 表示“表示为数据库定义的区域设置”。 (参考:PostgreSQL 文档 collation.html)。示例:在 Windows 上,它可能不区分大小写。我在 Windows 10 上就是这样。