库存系统中自动提取ITEM字段的计量单位与包装规格需求
库存系统中ITEM列的计量单位与包装规格自动提取优化方案
需求背景
基于库存系统的ITEM列字符串,自动填充**Unit of Measure(计量单位)和Pack Size(包装规格)**列:
- Pack Size:提取ITEM字符串末尾、非数值字符前的数值(支持整数/小数)
- 计量单位:此前用RIGHT函数提取时,单字符单位(如G、L)需额外清洗,需优化提取逻辑
示例数据:
| ITEM | Unit of Measure | Pack Size |
|---|---|---|
| BRAND A 2X6X150ML | ML | 150 |
| BRAND B 4X3X25G | G | 25 |
| BRAND C 12X30ML | ML | 30 |
| BRAND D 12X1.5L | L | 1.5 |
优化提取方案(以Excel 365/数据库为例)
1. 提取Pack Size(包装规格)
利用正则表达式精准捕获末尾数值部分,无需依赖固定长度:
Excel公式
=VALUE(REGEXEXTRACT(A2,"(\d+\.?\d*)[A-Z]+$"))
- 逻辑说明:
\d+\.?\d*匹配整数或小数(如150、1.5),[A-Z]+$匹配结尾的单位字符,捕获组(\d+\.?\d*)提取目标数值,VALUE转为数值格式。
MySQL SQL语句
SELECT REGEXP_SUBSTR(item, '([0-9]+\\.?[0-9]*)[A-Z]+$', 1, 1, '', 1) AS pack_size FROM inventory;
2. 提取计量单位(Unit of Measure)
同样用正则提取数值后的单位字符,统一处理单/多字符单位:
Excel公式
=REGEXEXTRACT(A2,"\d+\.?\d*([A-Z]+)$")
- 逻辑说明:
\d+\.?\d*匹配末尾数值,([A-Z]+$)捕获数值后的所有大写字母,直接得到计量单位(无需额外清洗)。
MySQL SQL语句
SELECT REGEXP_SUBSTR(item, '[0-9]+\\.?[0-9]*([A-Z]+)$', 1, 1, '', 1) AS unit_of_measure FROM inventory;
方案优势
- 无需提前判断单位长度,自动适配单字符(G、L)和多字符(ML)单位
- 支持整数、小数格式的Pack Size提取
- 避免额外数据清洗步骤,提升自动化效率
内容的提问来源于stack exchange,提问作者Kevi
相关产品推荐
相关产品推荐

