带有变音符号的SQLite select-string

时间:2016-01-11 18:13:53

标签: sqlite select

这是一个简单的问题,但我不能单独解决它,因为我对SQL并不熟悉。

你们大多数人可能已经知道这一点,德语中有变音字母,例如: “Ä,Ö,Ü”,它们的小写字母是“ä,ö,ü”。

我正在使用sqlite数据库,使用Firefox插件“SQLiteManager”访问它。

我的选择语句如下所示:

SELECT * FROM Projects WHERE Token LIKE '%ä%'

Firefox插件以及.NET的SQLite库都返回错误的输出。它们不仅返回带有小写“ä”的条目,还返回带有大写“Ä”的条目。

你们知道一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:1)

documentation说:

  

默认情况下,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ü