在 mysql 中按“%%”自定义排序

Custom Sort By "%%" in mysql

我有一个 table 这样的:

|city_name|
 Shadyside
 Chalkyitsik
 Wyalusing
 Quartzsite
 Seaside
 Shawnee Mission
 Siberia
 Sibley
 Nicasio
 Lacassine
 Sicily Island
 Andalusia
 Sidell
 Sidney
 ...
 ..
 .

并通过以下查询选择:

SELECT city_name FROM my_table WHERE city_name LIKE '%si%'

代替“%si%”,可以放任何东西。

我想按第一个以 'si' 开头的词排序。

输出是这样的:

|city_name|
 Siberia
 Sibley
 Sicily Island
 Sidell
 Sidney
 ... And the rest of the words that are '%si%'

这个排序(ORDER BY)应该怎么做?

您可以在 order by 和表达式中使用多个键:

SELECT city_name
FROM my_table
WHERE city_name LIKE '%si%'
ORDER BY (city_name LIKE 'si%') DESC, city_name;

MySQL 将布尔表达式视为数字上下文中的数字,“0”表示假,“1”表示真。 DESC 将匹配项 (1 = true) 放在首位。

SELECT city_name
FROM my_table
WHERE city_name LIKE '%si%'
ORDER BY (city_name LIKE 'si%') DESC;