我想通过字符串匹配从sqlite3数据库选择记录。但是如果我在where子句中使用'=',我发现sqlite3是区分大小写的。有人能告诉我如何使用字符串比较不区分大小写吗?
当前回答
可以使用like查询将各自的字符串与表值进行比较。
Select column name from table_name where column name like '各自的比较值';
其他回答
SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE
另一种选择可能对您的情况有意义,也可能没有意义,那就是实际上有一个单独的列,其中包含现有列的预先低分值。可以使用SQLite函数LOWER()填充该列,然后可以对该列执行匹配。
显然,它增加了冗余和潜在的不一致性,但如果您的数据是静态的,它可能是一个合适的选择。
你可以这样做:
SELECT * FROM ... WHERE name LIKE 'someone'
(这不是解决方案,但在某些情况下非常方便)
"The LIKE operator does a pattern matching comparison. The operand to the right contains the pattern, the left hand operand contains the string to match against the pattern. A percent symbol ("%") in the pattern matches any sequence of zero or more characters in the string. An underscore ("_") in the pattern matches any single character in the string. Any other character matches itself or its lower/upper case equivalent (i.e. case-insensitive matching). (A bug: SQLite only understands upper/lower case for ASCII characters. The LIKE operator is case sensitive for unicode characters that are beyond the ASCII range. For example, the expression 'a' LIKE 'A' is TRUE but 'æ' LIKE 'Æ' is FALSE.)."
这对我很有效。 从表_name中选择测试名
简单地说,你可以在SELECT查询中使用COLLATE NOCASE:
SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE
推荐文章
- SQLite并发访问
- 如何连接字符串与填充在sqlite
- 在Android SQLite中处理日期的最佳方法
- SQLite数据库文件使用什么扩展名重要吗?
- 无法加载DLL 'SQLite.Interop.dll'
- 快速简单的方法迁移SQLite3到MySQL?
- 我如何做一个不区分大小写的字符串比较?
- Oracle中不区分大小写的搜索
- 在Ubuntu上安装sqlite3-ruby错误
- sqlite3。ProgrammingError:提供的绑定数量不正确。当前语句使用1,并提供了74个
- SQLite有。net / c#包装器吗?
- 如何在Django ORM中查询不区分大小写的数据?
- Android开发有什么好的ORM工具吗?
- 不区分大小写的搜索
- 如何在SQLite中看到表的结构?