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

Oracle SQL批量更新表列值:将无短划线条码转为指定带短划线格式

Oracle条码格式批量更新解决方案

原SQL语句的问题

  • Oracle的SUBSTR函数起始索引为1,而非0,原语句中SUBSTR(b.barcode, 0, 3)会导致截取错误
  • Oracle字符串连接使用||运算符,而非.CONCAT()方法,原连接语法不符合Oracle规范
  • 条件判断可简化:直接筛选长度为15且不含短划线的记录,无需判断多段短划线

正确的更新脚本

先执行查询语句验证转换结果:

SELECT 
  barcode,
  CASE 
    WHEN LENGTH(barcode) = 15 AND barcode NOT LIKE '%-%' THEN
      SUBSTR(barcode, 1, 3) || '-' || SUBSTR(barcode, 4, 4) || '-' || SUBSTR(barcode, 8, 7) || '-' || SUBSTR(barcode, 15, 1)
    ELSE barcode
  END AS formatted_barcode
FROM barcode
WHERE LENGTH(barcode) = 15 AND barcode NOT LIKE '%-%';

确认结果正确后,执行更新语句:

UPDATE barcode
SET barcode = SUBSTR(barcode, 1, 3) || '-' || SUBSTR(barcode, 4, 4) || '-' || SUBSTR(barcode, 8, 7) || '-' || SUBSTR(barcode, 15, 1)
WHERE LENGTH(barcode) = 15 AND barcode NOT LIKE '%-%';

说明

  • 仅更新长度15位且不含短划线的条码,避免误改已格式化的记录
  • 转换规则严格对应XXX-XXXX-XXXXXXX-X格式:
    • 前3位 + '-'
    • 接下来4位 + '-'
    • 再接下来7位 + '-'
    • 最后1位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:57:05