如何在SQLite中使用ESCAPE?

时间:2010-09-10 22:02:18

标签: sql database sqlite

尝试this answer但没有运气:

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

SELECT columnX FROM MyTable

WHERE columnX LIKE  '%\%16'  ESCAPE '\'  

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

我执行语句并且没有返回数据但没有错误?

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

(带有C API的SQLite)

2 个答案:

答案 0 :(得分:6)

我认为问题在于你从模式的末尾错过了%

'%\%16%'

反斜杠通常会导致各种编程语言和工具混淆,特别是在查询到达数据库之前涉及多层解析时。为简化起见,您可以尝试使用其他转义字符:

WHERE columnX LIKE '%!%16%' ESCAPE '!'

答案 1 :(得分:1)

您的示例数据以%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中试试这个,在我展示的简单示例表上,看看你的问题是否仍然存在。