select * from queue; 739cdbff68914b688509372af85ac05e|31967522_13|rendering 810c6-6ren">
gpt4 book ai didi

sql - 如何使用 "where"子句在 SQLite 查询中转义下划线

转载 作者:行者123 更新时间:2023-12-04 00:03:54 26 4
gpt4 key购买 nike

我想查询以下数据库:

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';

都没有返回或错误。似乎下划线导致了问题,但我应该如何逃避它?谢谢。

最佳答案

我认为,而不是以下选择查询:

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

你真的打算写这个查询:
SELECT * FROM queue WHERE job LIKE '%31967522_3%';

与 equals 一起使用时,字面下划线应该没有问题。使用时 LIKE ,我们可以转义下划线:
SELECT * FROM queue WHERE job LIKE '%31967522\_3%' ESCAPE '\';

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

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

关于sql - 如何使用 "where"子句在 SQLite 查询中转义下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52830173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com