Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
区分大小写,如select SQLite_Sql_Sqlite_Case Sensitive - Fatal编程技术网

区分大小写,如select SQLite

区分大小写,如select SQLite,sql,sqlite,case-sensitive,Sql,Sqlite,Case Sensitive,因此,我有以下疑问: select username from users where username like 'aDam%' 但这里的问题是它不区分大小写。此查询还将获得名为“adam%”、“adam%”等的用户 问题:如何仅获取“aDam%”使查询区分大小写 注意:%运算符在这里很重要。因为Like不区分大小写,所以它不能单独工作,但一个解决方法是将它与SUBSTR函数一起使用 select username from users where username like 'aDam

因此,我有以下疑问:

select username from users where username like 'aDam%'
但这里的问题是它不区分大小写。此查询还将获得名为“adam%”、“adam%”等的用户

问题:如何仅获取“aDam%”使查询区分大小写


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

因为Like不区分大小写,所以它不能单独工作,但一个解决方法是将它与SUBSTR函数一起使用

select username 
from users 
where username like 'aDam%' 
  and substr(username,1,4) = 'aDam'

在运行查询之前,可以将pragma设置为ON

PRAGMA区分大小写=布尔值

LIKE运算符的默认行为是忽略ASCII的大小写 人物。因此,默认情况下,与“a”类似的“a”为真。这个 区分大小写\u like pragma安装一个新的应用程序,定义如下 函数区分大小写或不区分大小写,具体取决于 区分大小写的值,如pragma。当区分大小写时 禁用时,表示类似于默认值的行为。什么时候 启用区分大小写的类,大小写变得重要。那么,为了 例如,“a”LIKE“a”是假的,但“a”LIKE“a”仍然是真的

这个pragma使用sqlite3\u create\u函数重载 GLOB函数,它可以覆盖以前的同类实现 和应用程序注册的GLOB。此pragma仅更改 类SQL运算符的行为。它不会改变用户的行为 sqlite3_strlike C语言接口,通常情况下 麻木不仁

然后按原样运行查询

PRAGMA case_sensitive_like=ON;
select username from users where username like 'aDam%';

在Sql FIDLE上测试它。

我喜欢这样做,因为它非常明确,您希望查询对这个特定元素区分大小写,并且不会使Sql复杂化。@xQbert有趣的是,当源varchar具有不区分大小写的排序规则时,这也适用于like。但是如果使用=you,则可能必须向搜索字符串添加COLLATE BINARY。