Fly*_*des 0 sql sqlite case-sensitive
所以我有以下查询:
select username from users where username like 'aDam%'
Run Code Online (Sandbox Code Playgroud)
但这里的问题是它不区分大小写。此查询还将获得名为“adam%”、“Adam%”等的用户。
问题:如何只获得“aDam%”(使查询区分大小写)?
注意:% 运算符在这里很重要。
在运行查询之前,您可以将case_sensitive_like pragma设置为 ON。
PRAGMA case_sensitive_like = boolean;
LIKE 运算符的默认行为是忽略 ASCII 字符的大小写。因此,默认情况下 'a' LIKE 'A' 为真。case_sensitive_like pragma 安装一个新的应用程序定义的 LIKE 函数,该函数区分大小写或不区分大小写,具体取决于 case_sensitive_like pragma 的值。禁用 case_sensitive_like 时,表示默认的 LIKE 行为。启用 case_sensitive_like 时,大小写变得重要。因此,例如, 'a' LIKE 'A' 是假的,但 'a' LIKE 'a' 仍然是真的。
此 pragma 使用 sqlite3_create_function() 重载 LIKE 和 GLOB 函数,这可能会覆盖应用程序注册的 LIKE 和 GLOB 的先前实现。此编译指示仅更改 SQL LIKE 运算符的行为。它不会改变 sqlite3_strlike() C 语言接口的行为,它总是不区分大小写的。
然后按原样运行查询。
PRAGMA case_sensitive_like=ON;
select username from users where username like 'aDam%';
Run Code Online (Sandbox Code Playgroud)
测试它在这里的SQL提琴。
| 归档时间: |
|
| 查看次数: |
2215 次 |
| 最近记录: |