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

SQLite-关闭整个数据库的区分大小写功能,sqlite,Sqlite,我是否可以关闭整个数据库的大小写敏感度,即所有表的所有列 如果我已经创建了数据库,会发生什么 是否必须为所有列手动执行此操作,将COLLATE设置为NOCASE 我在几个查询中尝试了NOCASE,如下所示 select * from ...table COLLATE NOCASE 但是如果我或其他新人忘记使用NOCASE怎么办 我已经厌倦了在创建表时创建每一列NOCASE。您应该在表上设置COLLATE NOCASE。如果表格已经存在,请使用altertable。有关说明和示例,请参见此处

我是否可以关闭整个数据库的大小写敏感度,即所有表的所有列

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

是否必须为所有列手动执行此操作,将
COLLATE
设置为
NOCASE

我在几个查询中尝试了
NOCASE
,如下所示

select * from ...table  COLLATE NOCASE
但是如果我或其他新人忘记使用NOCASE怎么办
我已经厌倦了在创建表时创建每一列NOCASE。

您应该在表上设置
COLLATE NOCASE
。如果表格已经存在,请使用
altertable
。有关说明和示例,请参见此处

UPDATEMrGumble是正确的,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;

有一个名为(30天免费试用)的应用程序可以为您执行此过程。

您不能更改现有列上的
collate
<代码>更改表格只能添加列,或重命名整个表格。您的解决方案是在复制数据之前重命名表以创建新表。@MrGumble您说得对。您需要为此创建一个中间表。见上面更新的答案。