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

如何从SQL表的DESCRIPTION字段提取NORM标准编号?

需求:从物料描述字段中提取NORM标准编号

我有一张包含约10万条物料记录的表,每条记录都有DESCRIPTION字段,该字段格式无统一标准。

示例数据

ARTIKELNRDESCRIPTION
104009400031900S235JRG2C+C EN 10277/10 80 x 8 mm Blanker Flachstahl
104009800002950Werksattest nach EN 10204
105009400092360EN 10060 Inox Rund Ø 28 mm WNr1.4034 warmgefertigt
10500940006857190 mm WNr1.4404 warmgefertigt, EN 10060, geschmiedet
105009400004420WNr1.4301 Inox Vierkantstahl 6 x 6 mm EN 10278, blankgezogen
105009400008800WNr1.4301 Inox Band geschnitten 25 x 4 mm, Breitentol. 25 m
105009400068600WNr1.4112 Inox Rund 8.00 mm nach EN 10088-3 + A+C+SL, gesch
105009400068700WNr1.4301 Inox Rund 36.00 mm nach EN 10088-3, geschliffen, T
105009400068800WNr1.4104 Inox Rund 25.00 mm nach EN 10088-3, geschliffen, T
105009400010035WNr1.4404 Inox Vierkantstahl 30 x 30 mm, gezogen EN 10278

预期结果

ARTIKELNRNORM
104009400031900EN 10277/10
104009800002950EN 10204
105009400092360EN 10060
105009400068571EN 10060
105009400004420EN 10278
105009400008800
105009400068600EN 10088-3
105009400068700EN 10088-3
105009400068800EN 10088-3
105009400010035EN 10278
解决方案

可以通过正则表达式匹配提取符合格式的NORM编号,这类编号的规律是:以EN 开头,后面跟随数字,可能包含-或/分隔符。

1. MySQL 实现

使用REGEXP_SUBSTR函数提取匹配内容:

SELECT 
    ARTIKELNR,
    REGEXP_SUBSTR(DESCRIPTION, 'EN [0-9]+(/|-)[0-9]+|EN [0-9]+') AS NORM
FROM your_table_name;
  • 正则说明:EN [0-9]+(/|-)[0-9]+匹配带/或-的EN标准(如EN 10277/10、EN 10088-3);EN [0-9]+匹配纯数字的EN标准(如EN 10204)。

2. PostgreSQL 实现

使用SUBSTRING结合正则:

SELECT 
    ARTIKELNR,
    SUBSTRING(DESCRIPTION FROM 'EN [0-9]+(/|-)?[0-9]*') AS NORM
FROM your_table_name;
  • 正则说明:(/|-)?表示可选的分隔符,[0-9]*表示后面可选的数字,覆盖两种格式的EN标准。

3. 注意事项

  • 如果DESCRIPTION中存在多个EN标准,上述SQL只会提取第一个匹配项;若需提取所有,需根据数据库特性做进一步处理(如递归拆分)。
  • 测试正则表达式时,可先针对样本数据验证匹配准确性,再批量应用到10万条数据上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:22:50