sql - Sequelize Parens 在 WHERE 子句中
问题描述
我有一个看起来像这样的 WHERE 子句。
WHERE (`version` = FALSE
OR (name LIKE '%8%')
OR (name LIKE '%9%')
AND (sId IN (1)))
我需要它看起来像这样。
WHERE (`version` = FALSE
OR (name LIKE '%8%')
OR (name LIKE '%9%'))
AND (sId IN (1))
我正在使用 where.push ,但我似乎无法弄清楚。
续集代码。
where.push(version: false)
where.push(Sequelize.literal(`OR (name LIKE '%${id1}%')`)
where.push(Sequelize.literal(`OR (name LIKE '%${id2}%')`)
where.push({sId: {$in: sIds}})
解决方案
如果您可以使用某些运算符编写此类条件,请不要使用Sequelize.literal
(绝对不要尝试自己在字符串中组合此类条件以避免 SQL 注入)Op
。在您的情况下,您可以使用Op.or
和Op.like
运算符:
where = {
[Op.or]: [{
version: false,
}, {
name: {
[Op.like]: `%${id1}%`
}
}, {
name: {
[Op.like]: `%${id2}%`
}
},
],
sId: {
[Op.in]: sIds
}
}
推荐阅读
- database-design - 如何在 Spanner 中高效地创建强有序序列?
- c++ - 使用 SIGINT 停止计划任务
- javascript - 使用 SQL 进行 AES 加密,然后使用 Javascript 进行解密
- artifactory - 如何将 google maven 存储库添加到工件中的远程存储库
- c# - 是否有 object[] 框
- php - API 图像对 AWS S3 的响应 [PHP]
- javascript - 如何测试具有多个输入的 api POST 调用
- javascript - Vue + SSR webpackJsonp 未定义
- javascript - 创建可以叠加图像的倒圆角箭头
- tensorflow - 防止tensorflow在使用Monitored Training Session时占用整个gpu