我必须编写一个查询,以一种方式排序(排序)我的用户名,它应该按优先级(在名称中)的特定字母进行排序。 例如,如果我有用户Lemon,Loger,Alan,Avon,Bland,Cavin,Clauge,那么我的查询应按以下顺序返回:
即。 “L”字母应该优先排序
答案 0 :(得分:1)
您可以使用position
功能提取l
的位置,并根据该位置进行排序。但是,要记住两点需要注意:
position
区分大小写,因此您必须明确处理案例(例如,通过小写字符串进行搜索)。l
)不在字符串中,position
将返回0
,那么您&#39 ; ll必须明确地处理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