区分大小写,如 select SQLite

Fly*_*des 0 sql sqlite case-sensitive

所以我有以下查询:

select username from users where username like 'aDam%'
Run Code Online (Sandbox Code Playgroud)

但这里的问题是它不区分大小写。此查询还将获得名为“adam%”、“Adam%”等的用户。

问题:如何只获得“aDam%”(使查询区分大小写)?

注意:% 运算符在这里很重要。

Luk*_*rms 5

在运行查询之前,您可以将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提琴。