在 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;
我有一个 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;