1
我必須編寫一個查詢來排序(按順序排列)我的用戶名,使用特定字母進行排序的方式優先(名稱內)。 例如,如果我有用戶檸檬,Loger,艾倫,雅芳,布蘭德,卡萬,Clauge那麼我的查詢應按照以下順序返回這些:PGSQL通過每個用戶名中的特定字母來查詢排序
- 檸檬
- Loger
- 艾倫
- 布蘭德
- Clauge
- 雅芳
- 卡萬
即「L」的信應該在分揀
我必須編寫一個查詢來排序(按順序排列)我的用戶名,使用特定字母進行排序的方式優先(名稱內)。 例如,如果我有用戶檸檬,Loger,艾倫,雅芳,布蘭德,卡萬,Clauge那麼我的查詢應按照以下順序返回這些:PGSQL通過每個用戶名中的特定字母來查詢排序
即「L」的信應該在分揀
可以使用position
函數來提取的l
的位置,並且排序根據該優先級是。有,但是,兩個警告要牢記:
position
是大小寫敏感的,所以你必須與案件明確地處理(例如,通過lowercasing字符串進行搜索)。l
,在這種情況下)是不是在字符串中,position
將返回0
,所以你必須處理0
明確,以免不LS的名字排在前面,而不是最後的:SELECT name
FROM mytable
ORDER BY CASE POSITION('l' IN LOWER(name))
WHEN 0 THEN NULL
ELSE POSITION('l' IN LOWER(name))
END ASC NULLS LAST,
name
確定這是一個很酷的解決方案:o –
感謝@mureinik。提供的查詢適用於我。 :) –