我有這些列的表格: id, place 我的位置是型別文本,看起來像這樣:AL-100, AL-101, AR-100, ... . 是否有任何選項可以讓 A-L 和 A-R 依次按第一個字母和編號排序?
像這樣的 AL-100, AR-100
我當前的 sql:
SELECT * FROM inventory ORDER BY placement
uj5u.com熱心網友回復:
似乎您需要先按數字后綴排序,然后再按字母前綴排序。所以這里使用的是正則運算式。
with inventory(placement) as (values ('A-L-100'), ('A-L-101'), ('A-R-100'))
select * from inventory
order by substring(placement from '(\d )$'),
substring(placement from '(^[^\d] )');
在您發表評論后 - 按前導字母排序,然后按尾隨數字排序。
with inventory(placement) as
(
values
('B-L-100'), ('B-L-101'), ('B-R-100'),
('A-L-100'), ('A-L-101'), ('A-R-100')
)
select * from inventory
order by left(placement, 1), substring(placement from '(\d )$');
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392856.html
標籤:sql PostgreSQL的
上一篇:當我不使用子查詢時,為什么會出現運算元應該包含1列錯誤?
下一篇:如何在SQL中覆寫過去的記錄?
