【问题标题】:query with LIKE but case sensitive使用 LIKE 查询但区分大小写
【发布时间】:2014-03-11 05:39:59
【问题描述】:

为什么我的查询不区分大小写?

Select * from MyTable where name like '%Ann%'

正确显示记录 1:

Record1= John, Ann, Jack

但也显示记录 2:

Record2: Jack, Susanne, Jim

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    您可以执行PRAGMA case_sensitive_like = on,但这会影响您程序中使用的所有 LIKE,并禁用前缀搜索的任何索引优化。

    一个更好的主意是将 LIKE 替换为 GLOB:

    SELECT * FROM MyTable WHERE Name GLOB '*Ann*'
    

    【讨论】:

      【解决方案2】:

      [复制自rbedger's answer:]

      您可以在不区分大小写的字段上使用 UPPER 关键字,然后将 like 语句大写

      SELECT * FROM mytable 
      WHERE caseSensitiveField like 'test%' 
      AND UPPER(caseInsensitiveField) like 'G2%'
      

      【讨论】:

      • 使用 UPPER 不会使比较大小写敏感
      【解决方案3】:

      SQL LIKE 不区分大小写(感谢 CL)所以,在某些 SQL 实现中,您 can do case Sensitive SQL query Searches

      也检查一下:Case insensitive searching in Oracle

      【讨论】:

      • Sqlite 也区分大小写吗?
      • LIKE 在 SQL 标准中指定不区分大小写。要更改此默认值,您必须使用特定于数据库的机制。
      猜你喜欢
      • 1970-01-01
      • 2016-01-17
      • 2013-04-25
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 2013-09-22
      相关资源
      最近更新 更多