如何确定是否使用COLLATE NOCASE创建SQLite列

时间:2018-03-03 16:37:24

标签: sql sqlite

SQLite数据库中的列必须是COLLATE NOCASE。我假设没有办法将该功能添加到现有表中,所以我准备用它重新创建表。如何确定现有列是否为COLLATE NOCASE,以避免每次打开时重新创建表?

2 个答案:

答案 0 :(得分:0)

如果足以更改查询中的排序规则,则可能根本不需要这样做。我的意思是你可以在查询中覆盖它。它不会影响约束或索引,但根据您的使用情况,它可能已经足够了。

要明确:表定义中的collat​​e子句只是查询的默认值。您可以在查询中覆盖它。

e.g。

 WHERE column = 'term' COLLATE NOCASE

 ORDER BY column COLLATE NOCASE

然而,并非SQLite的LIKE不遵守collat​​e子句(而是使用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