You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含JSON_SEARCH的MariaDB原生SQL转换为Sequelize查询

Sequelize 实现 MariaDB JSON_SEARCH 查询方案

以下是两种兼容原SQL逻辑的实现方式:

方式1:使用sequelize.fn调用原生函数(符合Sequelize规范)

首先引入运算符依赖:

const { Op } = require('sequelize');

查询代码示例(假设对应表的模型名为Table):

const result = await Table.findAll({
  where: {
    [Op.and]: [
      sequelize.where(
        sequelize.fn('JSON_SEARCH', sequelize.col('attributes'), 'all', 'X'),
        Op.like,
        '"$[%].value1"'
      ),
      sequelize.where(
        sequelize.fn('JSON_SEARCH', sequelize.col('attributes'), 'all', 'Y'),
        Op.like,
        '"$[%].value2"'
      )
    ]
  }
});

方式2:使用sequelize.literal写原生条件(写法更简洁)

如果是动态查询参数,建议使用replacements避免SQL注入风险:

// 动态查询参数示例
const val1 = 'X';
const val2 = 'Y';

const result = await Table.findAll({
  where: sequelize.literal(`
    JSON_SEARCH(attributes,'all', ?) like '"$[%].value1"' 
    AND JSON_SEARCH(attributes,'all', ?) like '"$[%].value2"'
  `),
  replacements: [val1, val2]
});

补充说明

JSON_SEARCH属于MariaDB/MySQL专属的原生函数,Sequelize通用文档不会单独收录这类数据库特有函数的用法,所有原生数据库函数都可以通过上述两种方式调用。


内容的提问来源于stack exchange,提问作者Razvan V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:45:04