如何使用“ where”子句在SQLite查询中转义下划线

时间:2018-10-16 07:34:10

标签: sql sqlite

我想查询以下数据库:

sqlite> select * from queue;
739cdbff68914b688509372af85ac05e|31967522_13|rendering
810c69dc4d68425f83c82aa1ac0a625e||waiting_train
af6f5d0c5cb2472fb311ccf6b738dacd|31967524_2|rendering
cf0164f51da64986a4ced63301aa1d85|31967522_3|training
ef07bb25da94472f87460768ea0b8f7d|31967522_16|rendering
testuidaxc|31967523|training

正在使用job=31967523进行查询:

sqlite> select * from queue where job='31967523';
testuidaxc|31967523|training

但是,对于带有下划线的作业,无论我如何尝试,都无法正常工作

sqlite> select * from queue where job='31967522_3';
sqlite> select * from queue where job='31967522[_]3';
sqlite> select * from queue where job=31967522[_]3;
Error: near "[_]": syntax error
sqlite> select * from queue where job='31967522[_]3';

全部不返回任何内容或错误。下划线似乎是导致问题的原因,但是我应该如何解决呢?谢谢。

2 个答案:

答案 0 :(得分:2)

我假设不是以下选择查询:

SELECT * FROM queue WHERE job = '31967522_3';

您确实打算编写此查询:

SELECT * FROM queue WHERE job LIKE '%31967522_3%';

与下划线一起使用时,下划线应该没有问题。使用LIKE时,我们可能会忽略下划线:

SELECT * FROM queue WHERE job LIKE '%31967522\_3%' ESCAPE '\';

以上查询将匹配其job包含文字字符串31967522_3的任何记录。

documentation看来,当打算将某个字符用作ESCAPE的转义字符时,总是需要LIKE。也就是说,似乎没有默认的转义字符。

答案 1 :(得分:0)

window.deferredPrompt.prompt()