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

如何用SUBSTRING_INDEX拆分数据库size字段中的数字与单位?

拆分数据库size列的数字与单位部分

针对你提到的size列数据(236ml、50g、100g、6 x 2pk),要拆分数字和单位部分,单纯用SUBSTRING_INDEX不太适配——它依赖固定分隔符,而你的数据没有统一分隔符,推荐结合正则相关函数实现,以MySQL为例:

方法一:定位非数字位置拆分

通过REGEXP_INSTR找到第一个非数字字符的位置,再用SUBSTRING拆分:

SELECT
  size,
  SUBSTRING(size, 1, REGEXP_INSTR(size, '[^0-9]') - 1) AS number_part,
  TRIM(SUBSTRING(size, REGEXP_INSTR(size, '[^0-9]'))) AS unit_part,
  CONCAT(
    SUBSTRING(size, 1, REGEXP_INSTR(size, '[^0-9]') - 1),
    ': ',
    TRIM(SUBSTRING(size, REGEXP_INSTR(size, '[^0-9]')))
  ) AS result
FROM your_table;

执行后会输出你要的格式:

  • 236: ml
  • 50: g
  • 100: g
  • 6: 2pk

方法二:正则直接匹配拆分

用REGEXP_SUBSTR直接匹配数字段和单位段,写法更简洁:

SELECT
  size,
  REGEXP_SUBSTR(size, '^[0-9]+') AS number_part,
  TRIM(REGEXP_SUBSTR(size, '[^0-9].*$')) AS unit_part,
  CONCAT(
    REGEXP_SUBSTR(size, '^[0-9]+'),
    ': ',
    TRIM(REGEXP_SUBSTR(size, '[^0-9].*$'))
  ) AS result
FROM your_table;

如果你非要用SUBSTRING_INDEX,得先给所有数据统一加分隔符(比如在首个非数字前插入冒号),但这种操作多此一举,不如正则方案直接高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:30:05