【问题标题】:SQLite select-string with umlaut带有变音符号的 SQLite 选择字符串
【发布时间】:2019-03-15 23:17:31
【问题描述】:

这是一个简单的问题,但我无法单独解决,因为我对 SQL 不是很熟悉。

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

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

我的选择语句如下所示:

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

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

你们知道解决这个问题的简单方法吗?

【问题讨论】:

    标签: sqlite select


    【解决方案1】:

    documentation 说:

    默认情况下,SQLite 只理解 ASCII 字符的大写/小写。对于超出 ASCII 范围的 unicode 字符,LIKE 运算符默认区分大小写。

    但是:

    SQLite 的 ICU 扩展包括 LIKE 运算符的增强版本,它可以跨所有 unicode 字符进行大小写折叠。

    【讨论】:

    • 看到了文档和这个线程:sqlite.1065341.n5.nabble.com/… 在我看来这个问题太具体了,我不想更深入地研究 SQLite,因为它只是我的 C# 的一小部分程序。感谢您的帮助!
    【解决方案2】:

    这是一个非常不方便的解决方法,它不会使查询更快,但它可以解决问题。像这样降低test_string 后,我替换所有大写的德语变音符号:

    SELECT replace(replace(replace(lower('ÄAÄBÖOÖGDDÜUÜ'), 'Ä', 'ä'), 'Ü', 'ü'), 'Ö', 'ö') AS lowered
    
    lowered
    ---------
    äaäböoögddüuü
    

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 2018-02-17
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多