SQLite能自然排序吗?例如,
CREATE TABLE animals ( id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL ); INSERT INTO animals (name) VALUES ('Monkey'); INSERT INTO animals (name) VALUES ('manatee'); SELECT name FROM animals ORDER BY name; name ---------- Monkey manatee
我希望自然地对结果进行分类(即海牛,猴子).SQLite没有这样排序的选项吗?我排序了很多数据,如果SQLite不能自然排序,我想解决方案是回到PostgreSQL或MySQL.
您没有必要alter
更改排序规则:
SELECT name FROM animals ORDER BY name COLLATE NOCASE;
如果您需要更专业的排序,可以sqlite3_create_collation*
使用函数系列注册自己的排序规则函数,然后使用COLLATE myCollationFunctionName
.
ORDER BY UPPER(name)
将完成你正在寻找的东西.
此外,您正在使用SQLite默认排序规则,这意味着使用C memcmp
函数进行比较,该函数比较字节.在这种情况下,M和m非常不同.您可以更改列以进行NOCASE
排序.但是,查看文档时,您似乎必须创建一个新表,将数据复制到其中,删除旧表并重命名新表,因为该ALTER TABLE
命令仅重命名表或添加列.