【发布时间】:2023-04-06 19:21:01
【问题描述】:
如何告诉 sequelize(使用 sqlite3)在 $like 子句中转义通配符(%,_)?
例如,我想生成一个类似于下面的查询,它在任何“things.description”中找到文字字符串_cool_(不仅仅是被任何字符包围的单词“cool”):
SELECT * FROM things WHERE description LIKE '\_cool\_' ESCAPE '\';
我猜它看起来像这样,但结果查询不是我希望的:
Thing.findAll({
where: {
description: {
$like: ['?', '_cool_'],
// ... or ...
$like: '\\_cool\\_',
$escape: '\\',
}
}
});
// => Executing (default):
// SELECT `id`, `description`
// FROM `Things` AS `Thing`
// WHERE `Thing`.`description` LIKE '?','_cool_';
很遗憾,我无法进入原始查询,因为“LIKE”子句将成为更大动态查询的一部分。
有什么想法吗?
【问题讨论】:
-
如果您要转义一个单数反斜杠,那会不会是
\_cool\_? -
@Xorifelse 在 JavaScript 中,字符串文字
'\\_'等于字符串"\_"。 -
看来这可能只是sequelize目前的不足github.com/sequelize/sequelize/issues/4317
标签: javascript sqlite sequelize.js