SQLite数据库中的列必须是COLLATE NOCASE。我假设没有办法将该功能添加到现有表中,所以我准备用它重新创建表。如何确定现有列是否为COLLATE NOCASE,以避免每次打开时重新创建表?
答案 0 :(得分:0)
如果足以更改查询中的排序规则,则可能根本不需要这样做。我的意思是你可以在查询中覆盖它。它不会影响约束或索引,但根据您的使用情况,它可能已经足够了。
要明确:表定义中的collate子句只是查询的默认值。您可以在查询中覆盖它。
e.g。
WHERE column = 'term' COLLATE NOCASE
或
ORDER BY column COLLATE NOCASE
然而,并非SQLite的LIKE
不遵守collate子句(而是使用pragma case_sensitive_like
)。
答案 1 :(得分:0)
如何确定现有列是否为COLLATE NOCASE
查询
SELECT sql FROM sqlite_master WHERE type='table' AND tbl_name='my_table'
将为您提供该表的CREATE TABLE
语句。您可以检查DDL以确定该列是否已定义为COLLATE NOCASE
。