在sqlite中使用LIKE case sensivity的便捷方法

Mak*_*see 2 sqlite optimization sql-like

我看到LIKE运算符可以在我切换PRAGMA case_sensitive_like = ON时优化查询.我测量,它确实有效,查询"LIKE someth%"在分区大的二进制索引表上变快十倍.但问题是我的库作为我的应用程序的附加组件实现,它维护自己的表与它连接的任何数据库.所以问题是

  • 我无法读取case_sensitive_like,因为它只支持设置,而不是读取.所以我不能暂时读取状态并在查询后返回它,
  • 作为一个应该服从db的主要功能的插件,我不应该将设置更改为我需要好的,因为它可能会影响其他例程.
  • 我看到没有Like(区分大小写)内部等价物直接调用optimizid查询.例如,使用LIKECASESENSITIVE而不是LIKE
  • 我可以调用sqlite3_create_function,但我不知道我是否可以在内部调用LIKE(CASE SENSITIVE).

Nic*_*kis 6

我无法读取,case_sensitive_like 因为它只支持设置,而不是读取.所以我不能暂时读取状态并在查询后返回它

您可以case_sensitive_like通过以下查询获取状态:

select case when 'a' like 'A' then 0 else 1 end
Run Code Online (Sandbox Code Playgroud)

这将返回1如果case_sensitive_like = ON0如果它OFF.