【问题标题】:searching for special characters sqlite搜索特殊字符 sqlite
【发布时间】:2013-09-27 18:53:34
【问题描述】:

我需要搜索我存储在sqlite数据库中的这个字符have a good day" ! @ # $ % ^ & * ( ) ',所以我使用了这个sql

Select ID From Tasks Where '--' || task || '--' || prio || '--' || due_date ||
'--' ||  [category] || '--' ||  note || '--'  LIKE 
'%have a good day" ! @ [#] [$] \% ^ & * ( ) ''%'  ESCAPE '\' 

我使用了一些转义技术,但是sqlite找不到它,我如何在搜索sqlite数据库时正确地转义这些特殊字符

【问题讨论】:

  • 对不起,你为什么要存储这样的东西?
  • 我为用户开发的应用程序需要它。他存储这些东西。您知道用户可以在搜索中输入任何内容
  • 您似乎正试图在已连接的列之一中搜索此值。我相信如果其中一列具有 NULL 值,则连接的结果也将为 NULL。所以,ISNULL 可能是你的答案

标签: sql sqlite


【解决方案1】:

您使用的是LIKE,而不是GLOB。 唯一需要转义的字符是 %_

此外,表中的任何NULL 值都会使LIKE 失败,因此您必须将任何可能的NULLs 转换为其他值:

Select ID
From Tasks
Where '--' || ifnull(task, '') ||
      '--' || ifnull(prio, '') ||
      '--' || ifnull(due_date, '') ||
      '--' || ifnull(category, '') ||
      '--' || ifnull(note, '') || '--'
      LIKE '%have a good day" ! @ # $ \% ^ & * ( ) ''%' ESCAPE '\'

【讨论】:

  • 我将查询修改为Select ID From Tasks Where '--' || task || '--' || prio || '--' || due_date || '--' || [category] || '--' || note || '--' LIKE '%have a good day ! @ # $ \% ^ & * ( ) ''%' ESCAPE '\' without result
  • 你在那个字符串中忘记了"
猜你喜欢
  • 2012-09-12
  • 2016-04-23
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 2016-03-11
  • 2015-09-27
  • 2013-03-25
相关资源
最近更新 更多