尝试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)
答案 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中试试这个,在我展示的简单示例表上,看看你的问题是否仍然存在。