这是一个简单的问题,但我不能单独解决它,因为我对SQL并不熟悉。
你们大多数人可能已经知道这一点,德语中有变音字母,例如: “Ä,Ö,Ü”,它们的小写字母是“ä,ö,ü”。
我正在使用sqlite数据库,使用Firefox插件“SQLiteManager”访问它。
我的选择语句如下所示:
SELECT * FROM Projects WHERE Token LIKE '%ä%'
Firefox插件以及.NET的SQLite库都返回错误的输出。它们不仅返回带有小写“ä”的条目,还返回带有大写“Ä”的条目。
你们知道一个简单的解决方案吗?
答案 0 :(得分:1)
默认情况下,SQLite只能理解ASCII字符的大写/小写。对于超出ASCII范围的unicode字符,LIKE运算符默认区分大小写。
可是:
SQLite的ICU扩展包括一个LIKE运算符的增强版本,它可以跨所有unicode字符进行大小写折叠。
答案 1 :(得分:0)
这是一个非常不方便的工作方式,它不能使查询更快,但是可以解决问题。像这样降低test_string
后,我替换了所有大写的德国变音符:
SELECT replace(replace(replace(lower('ÄAÄBÖOÖGDDÜUÜ'), 'Ä', 'ä'), 'Ü', 'ü'), 'Ö', 'ö') AS lowered
lowered
---------
äaäböoögddüuü