如何使用某些特殊字符对postgres列进行排序?

use*_*190 4 sorting postgresql

我正在尝试对Postgres数据库中的字符列进行排序:

Select column1 from table order by column1
Run Code Online (Sandbox Code Playgroud)

输出量

dir1 
dir2
dir3
#num1
t1
Run Code Online (Sandbox Code Playgroud)

我希望排序#num1先按sqlite的方式打印。有什么想法需要在查询中更改吗?

Erw*_*ter 5

一种可能的解决方案是“禁用”这种排序规则设置:

WITH x(a) AS (VALUES
  ('dir1')
 ,('dir2')
 ,('dir3')
 ,('#num1')
 ,('t1')
 )
SELECT *
FROM   x
ORDER  BY a COLLATE "C";
Run Code Online (Sandbox Code Playgroud)

单个表达式的临时整理需要PostgreSQL 9.1或更高版本。

大多数语言环境会忽略#排序的开头。如果切换到"C",则字符将按其字节值有效地排序。不过,这可能不是您想要的。

许多相关问题,例如:
PostgreSQL UTF-8二进制排序规则