我想排序在Postgres數據庫字符列:我如何使用特定字符對postgres列進行排序?
Select column1 from table order by column1
輸出
dir1
dir2
dir3
#num1
t1
我想要的那種打印#num1
第一sqlite的方式一樣。任何想法我需要改變我的查詢?
我想排序在Postgres數據庫字符列:我如何使用特定字符對postgres列進行排序?
Select column1 from table order by column1
輸出
dir1
dir2
dir3
#num1
t1
我想要的那種打印#num1
第一sqlite的方式一樣。任何想法我需要改變我的查詢?
一個可能的解決方案是「禁用」您整理設置這種:
WITH x(a) AS (VALUES
('dir1')
,('dir2')
,('dir3')
,('#num1')
,('t1')
)
SELECT *
FROM x
ORDER BY a COLLATE "C";
Ad-hoc Collation for individual expressions需要的PostgreSQL 9.1或更高版本。
大多數區域會忽略用於排序的前導#
。如果切換到"C"
,字符將按字節值進行有效排序。不過,這可能是也可能不是你想要的。
許多相關的問題,比如在這裏:
PostgreSQL UTF-8 binary collation
蠻力版本把#
在上面的排序順序
SELECT column1
FROM table1
ORDER BY CASE WHEN LEFT(column1, 1) = '#'
THEN 0 ELSE 1 END, column1
這裏是SQLFiddle演示。
這可能不是正是你想要
您可以使用命令字段的ASCII值是什麼:
SELECT column1 FROM table ORDER BY ascii(column1)
特殊字符的ASCII值是字母的人低。
輸出
#num1
dir1
dir2
dir3
t1
排序規則的問題? [postgres整理](http://www.postgresql.org/docs/9.1/static/collation.html) – Glenn