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

如何在Node.js Sequelize中实现忽略前导零的字符串匹配查询

解决Sequelize中带前导零的unit字段匹配问题

方案一:前端传入值预处理

直接在代码里把带前导零的unit转成无前置零的字符串,再进行精确匹配:

var obj = {
  code: '123',
  unit: '02'
}

// 处理unit:转成整数再转回字符串,自动去除前导零
const processedUnit = parseInt(obj.unit, 10).toString();

Model.findOne({ 
  where: {
    addressPostalCode: obj.code,
    addressUnit: processedUnit
  }
})

注:如果数据库中addressUnit存储的是数值类型,直接用parseInt(obj.unit, 10)作为查询值即可。

方案二:利用Sequelize数据库函数处理字段

通过Sequelize提供的数据库函数,在查询时对数据库字段和传入值统一处理,实现匹配:

场景1:addressUnit为数值类型

将传入的unit字符串转为整数,和数据库字段做数值匹配:

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

var obj = {
  code: '123',
  unit: '02'
}

Model.findOne({ 
  where: {
    addressPostalCode: obj.code,
    addressUnit: {
      [Op.eq]: Sequelize.cast(obj.unit, 'INTEGER')
    }
  }
})

场景2:addressUnit为字符串类型

使用ltrim函数去除双方的前导零后再匹配:

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

var obj = {
  code: '123',
  unit: '02'
}

Model.findOne({ 
  where: {
    addressPostalCode: obj.code,
    [Op.and]: [
      Sequelize.where(
        Sequelize.fn('ltrim', Sequelize.col('addressUnit'), '0'),
        Sequelize.fn('ltrim', obj.unit, '0')
      )
    ]
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:05:19