首页 > 解决方案 > SQLite首先按字母顺序选择,然后是所有其他字符

问题描述

我有一个带有表的 SQLite 数据库,其中包含具有不同名称的行。例如:

ID 姓名
1 安东尼
2 %
3 10
4 堆栈溢出
5 约翰

我从这个表中得到数据

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

它返回

ID 姓名
2 %
3 10
1 安东尼
5 约翰
4 堆栈溢出

但我希望它首先按字母顺序返回名称,然后以正确顺序返回所有其他以非字母开头的名称。所以我想得到:

ID 姓名
1 安东尼
5 约翰
4 堆栈溢出
2 %
3 10

我怎样才能做到这一点?

标签: sqlite

解决方案


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

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

请参阅演示


推荐阅读