sqlite - 在 sqlite 中使用 LIKE 区分大小写的便捷方法

标签 sqlite optimization sql-like

据我所知,如果我切换 PRAGMA case_sensitive_like=ON,LIKE 运算符可以优化查询。我测量过,它确实有效,查询“LIKE someth%”在相对较大的二进制索引表上变得快十倍。 但问题是我的库作为我的应用程序的附加组件实现,它维护自己的表及其连接的任何数据库。所以问题是

  • 我无法读取case_sensitive_like,因为它仅支持设置,不支持读取。所以暂时无法读取状态并在查询后返回,
  • 作为一个应该遵循数据库主要功能的插件,我不应该根据我的需要更改设置,因为它可能会影响其他例程。
  • 据我所知,没有类似(区分大小写)的内部等效项可供我直接调用 optimizid 查询。例如,使用 LIKECASESENSITIVE 而不是 LIKE
  • 我可以调用sqlite3_create_function,但我不知道是否可以在内部调用LIKE(CASE SENSITIVE)。

最佳答案

I can not read case_sensitive_like since it is only supported to be set, not read. So I can not temporarily read the state and return it after the query

您可以使用如下查询获取 case_sensitive_like 的状态:

select case when 'a' like 'A' then 0 else 1 end

如果 case_sensitive_like = ON,则返回 1;如果 OFF,则返回 0

关于sqlite - 在 sqlite 中使用 LIKE 区分大小写的便捷方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1757255/

相关文章:

sql - 在路径枚举的情况下,SQL 的 LIKE 如何工作?

SQLite AUTOINCREMENT 非主键列

python - SQLite 准备好的查询与未准备的查询 - 不同的结果(PySide,python)

java - 检查 HashMap 中是否存在字符串的一部分

MySQL 查询优化(运行 7.6 秒)

mysql - 检查表列中的变量数组时使用哪个 mySQL 运算符

sql - 使用 JOINS 比较 SQLite 中的后续行

java - 设置 3 个不同的闹钟 android

javascript - 当我尝试使用 jQuery 将标题归因于 DropDownlist 时出现性能问题

MySQL - 使用来自多个表的更新/设置