SQLite首先按字母顺序选择顺序,然后是所有其他字符

a0x5cqrl  于 2023-01-13  发布在  SQLite
关注(0)|答案(2)|浏览(204)

我有一个SQLite数据库,其中包含一个表,表中包含不同名称的行。例如:
| 身份证|姓名|
| - ------|- ------|
| 1个|安东尼|
| 第二章|百分比|
| 三个|十个|
| 四个|堆栈溢出|
| 五个|约翰|
我从这个表中得到数据

SELECT * FROM table WHERE 1 ORDER BY name Asc LIMIT ?, ?

它会回来
| 身份证|姓名|
| - ------|- ------|
| 第二章|百分比|
| 三个|十个|
| 1个|安东尼|
| 五个|约翰|
| 四个|堆栈溢出|
但是我希望它首先返回字母顺序的名字,然后所有其他以非字母开头的名字也按正确的顺序返回。所以我想得到:
| 身份证|姓名|
| - ------|- ------|
| 1个|安东尼|
| 五个|约翰|
| 四个|堆栈溢出|
| 第二章|百分比|
| 三个|十个|
我怎么才能做到呢?

sr4lhrrt

sr4lhrrt1#

使用运算符GLOB检查名称是否以ORDER BY子句中的字母开头:

SELECT * 
FROM tablename 
ORDER BY name GLOB '[A-Za-z]*' DESC, name

请参见demo

gmxoilav

gmxoilav2#

感谢@forpas,只想补充
如果您希望进行不区分大小写的排序,可以尝试如下操作

SELECT * 
FROM tablename 
ORDER BY name GLOB '[A-Za-z]*' DESC, Upper(name)

相关问题