【问题标题】:Case insensitive in SQLiteSQLite 中不区分大小写
【发布时间】:2014-05-14 20:21:08
【问题描述】:

我需要在 SQLite 中选择一些不区分大小写的行。例如:

COLLATE NOCASE 适用于“=”,例如

SELECT id,name from trait WHERE name = "ratio" COLLATE NOCASE

但不适用于“in”,例如

SELECT id,name from trait WHERE name in ("ratio") COLLATE NOCASE

我必须使用“in”来选择多个值,例如

SELECT id,name from trait WHERE name in ("ratio", 'number') COLLATE NOCASE 

我应该如何更改我的 SQL 脚本?感谢您的任何建议。

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    COLLATE NOCASE 必须直接出现在它修改的表达式之后。

    当你写name in ("ratio", 'number') COLLATE NOCASE时,排序规则被应用到比较的result,它只是一个数字0或1;排序规则在那里无效。

    IN 运算符在其左侧使用表达式的排序规则,因此这里必须应用排序规则:

    ... WHERE name COLLATE NOCASE IN ('ratio', 'number')
    

    【讨论】:

      【解决方案2】:

      怎么样

      SELECT id,name 
      FROM trait 
      WHERE UPPER(name) IN ("RATIO")
      

      【讨论】:

      • 没问题。很高兴能提供帮助。
      猜你喜欢
      • 2013-03-06
      • 2017-10-28
      • 2013-04-25
      • 2023-03-24
      • 2017-03-17
      • 2012-02-20
      • 2021-02-28
      • 2010-10-29
      • 2012-12-01
      相关资源
      最近更新 更多