【发布时间】:2023-03-15 07:52:01
【问题描述】:
我无法使用 postgresql 对字母数字数据进行排序。我的数据和查询如下所示
WITH x(t) AS (
VALUES
('GPS-10')
,('GPS-1')
,('GPS-2')
,('GPS-8B')
,('GPS-8A')
,('GPS-14')
,('SPS-2')
,('SPS-14')
)
SELECT t
FROM x
ORDER BY substring(t, '[^0-9-].*$'), (substring(t, '^[0-9]+'))::int
它给了我这个错误的结果(GPS-2 出现在 GPS-10 和 GPS-14 之后,SPS 数据也是如此)
"GPS-1"
"GPS-10"
"GPS-14"
"GPS-2"
"GPS-8A"
"GPS-8B"
"SPS-14"
"SPS-2"
我的预期结果是
"GPS-1"
"GPS-2"
"GPS-8A"
"GPS-8B"
"GPS-10"
"GPS-14"
"SPS-2"
"SPS-14"
我已经尝试了Alphanumeric sorting with PostgreSQL 和Alphanumeric sorting with PostgreSQL 中描述的所有解决方案,但没有奏效。
【问题讨论】:
标签: postgresql sorting