代码之家  ›  专栏  ›  技术社区  ›  T.T.T.

在sqlite中如何使用escape?

  •  3
  • T.T.T.  · 技术社区  · 16 年前

    尝试 this answer 没有任何运气:

    我正在使用 SQLite数据库浏览器 (使用sqlite引擎的3.3.5构建)执行此查询:

    SELECT columnX FROM MyTable
    
    WHERE columnX LIKE  '%\%16'  ESCAPE '\'  
    

    列中 X 我有一行数据: sampledata%167

    我执行语句,没有返回数据,也没有错误?

    http://www.sqlite.org/lang_expr.html

    (带C API的sqlite)

    2 回复  |  直到 16 年前
        1
  •  6
  •   Mark Byers    16 年前

    我想问题是你错过了 % 从图案的末端开始。

    '%\%16%'
    

    在各种编程语言和工具中,反斜杠通常会导致混淆,特别是在查询到达数据库之前涉及到多个解析级别时。为了简化操作,您可以尝试使用不同的转义符:

    WHERE columnX LIKE '%!%16%' ESCAPE '!'
    
        2
  •  1
  •   Brian Campbell Dennis Williamson    16 年前

    您的示例数据以 %167 ,但您的查询只匹配以 %16 . 您可能需要将查询更改为具有尾随 % 或结束 167 就像你的数据一样,取决于你的需要。

    当我在sqlite中尝试这个时,它工作得很好:

    sqlite> create table foo (bar text);
    sqlite> insert into foo (bar) values ('sampledata%167');
    sqlite> select * from foo where bar like '%\%16' escape '\';
    sqlite> select * from foo where bar like '%\%167' escape '\';
    sampledata%167
    

    您可能想尝试在sqlite shell中的一个简单的示例表(如我所示)上对此进行试验,以查看您的问题是否仍然存在。