【问题标题】:how to make my SQlite query case insensitive?如何使我的 SQlite 查询不区分大小写?
【发布时间】:2019-11-15 09:49:30
【问题描述】:

我原来的代码是:

String sql = "select t.* from (select dId, " +
                    "case when substr(dWord, 1, 4) in ('das ', 'der ','die ') " +
                    "then substr(dWord, 5) else dWord end as dWord " +
                    "from german) t where t.dWord like '%' || ? || '%' " +
                    "order by instr(t.dWord, ?), t.dWord";
            c = mydb.rawQuery(sql, new String[] {search, search});

例如,当我搜索“A”时,它会按字母顺序显示所有以大写字母“A”开头的单词,然后按字母顺序显示以“a”开头的单词。但我想将“a”视为“A”,将“A”视为“a”。我应该对我的代码进行哪些更改? Edit1 = 我知道 COLLATE NOCASE 但我不知道如何在我的代码中使用它。

【问题讨论】:

标签: android sql sqlite android-sqlite


【解决方案1】:

将语句的最后一行改为:

order by instr(lower(t.dWord), lower(?)), lower(t.dWord)

函数lower()会将列值和搜索字符串都转换为小写,以模拟函数instr()内部不区分大小写的比较。

【讨论】:

【解决方案2】:

在您想要排序的列中使用 lower 或 upper 关键字,不区分大小写

SELECT NAME from Customers 
order By lower(NAME);

参考

SQLite lower

【讨论】:

    猜你喜欢
    • 2013-04-25
    • 1970-01-01
    • 2013-03-06
    • 2017-03-17
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多