【问题标题】:Is this a bug in sqlite?这是sqlite中的错误吗?
【发布时间】:2017-03-22 11:24:20
【问题描述】:

我有以下捷克语查询:

select Id,Name 
from Account 
where Name like '%Še%'

它将返回正确的结果。但如果我在查询中将Š 更改为š

select Id,Name 
from Account 
where Name like '%še%'

它什么也不返回。这是一个 sqlite 错误吗?

【问题讨论】:

  • 数据库中的数据是大写还是小写?
  • 数据库中的数据为大写。我发现如果我在下面运行查询:select upper('še') 它返回 šE
  • 这个我也试过了,也没用。从帐户中选择 Id,Name,其中 Name like '%še%' COLLATE NOCASE

标签: sql sqlite sql-like uppercase lowercase


【解决方案1】:

https://www.sqlite.org/lang_expr.html#like:

重要提示:默认情况下,SQLite 只理解 ASCII 字符的大写/小写。默认情况下,LIKE 运算符对超出 ASCII 范围的 unicode 字符区分大小写。例如,表达式 'a' LIKE 'A' 为 TRUE,但 'æ' LIKE 'Æ' 为 FALSE。 SQLite 的 ICU 扩展包括 LIKE 运算符的增强版本,它可以跨所有 unicode 字符进行大小写折叠。

因此,您的问题的解决方案是获取带有 ICU 扩展的 SQLite 版本。

【讨论】:

    猜你喜欢
    • 2013-05-04
    • 2011-09-28
    • 2017-07-23
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多