我想通过字符串匹配从sqlite3数据库选择记录。但是如果我在where子句中使用'=',我发现sqlite3是区分大小写的。有人能告诉我如何使用字符串比较不区分大小写吗?


当前回答

另一种选择是创建自己的自定义排序规则。然后可以在列上设置排序规则,或将其添加到选择子句中。它将用于排序和比较。

这可以用来使'VOILA'像'voilà'。

http://www.sqlite.org/capi3ref.html#sqlite3_create_collation

排序函数必须返回一个整数,如果第一个字符串分别小于、等于或大于第二个字符串,则该整数为负、零或正。

其他回答

如果列的类型是char,那么你需要用空格来附加你正在查询的值,请参考这里的问题。除此之外,还可以使用COLLATE NOCASE或其他解决方案(upper()等)。

SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE

像这样使用

 "select * from $pwsXDataHistory where type = '$type' COLLATE NOCASE and $t_uStatus != '$DELETE' order by $t_name COLLATE NOCASE asc ");

简单地说,你可以在SELECT查询中使用COLLATE NOCASE:

SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE

这对我很有效。 从表_name中选择测试名