SQLite - 关闭整个数据库的区分大小写

Jay*_*ena 1 sqlite

我可以关闭整个数据库(即所有表的所有列)的区分大小写吗?

如果我已经创建了数据库会发生什么?

我是否必须手动将所有列设置COLLATENOCASE

我尝试NOCASE过几个查询,如下所示

select * from ...table  COLLATE NOCASE
Run Code Online (Sandbox Code Playgroud)

但是如果我或其他新人忘记使用怎么办?NOCASE 我厌倦了在创建表时使每一列都为 NOCASE。

Chr*_*ler 5

你应该放在COLLATE NOCASE桌子上。如果该表已存在,则使用ALTER TABLE. 有关说明和示例,请参阅sqlite.org 。

更新MrGumble 是对的,SQLite 不支持直接使用ALTER TABLE. 您需要通过这样的中间表:

CREATE TABLE table01 (id, name countrycode, comment );
INSERT INTO table01 SELECT id, name, countrycode, comment FROM table;
DROP TABLE table;
CREATE TABLE table (
   id       integer PRIMARY KEY AUTOINCREMENT,
   name     text COLLATE NOCASE
   country  integer,
   comment  text COLLATE NOCASE
);
INSERT INTO table (id, name, countrycode, comment)
    SELECT id, name, countrycode, comment FROM table01;
DROP TABLE table01;
Run Code Online (Sandbox Code Playgroud)

有一个名为SQLite Maestro的应用程序(有 30 天免费试用期)可以为您完成此过程。