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。提供的查询适用于我。 :) –