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

Oracle SQL拆分DIE_SIZE列字符串:仅提取die_y的问题排查与解决

问题原因及修复方案

问题原因

原SQL里用的正则表达式[^X]+$是匹配字符串末尾所有非X的字符,哪怕指定了起始位置参数为2,这个正则还是会从字符串结尾往前匹配,导致die_x和die_y都取到了X之后的数值,结果完全一致,不符合预期。

修复方法

提供两种可行的修改方案:

方案一:精准匹配X前后内容

用不同的正则分别匹配X之前(开头到X)和X之后(X到结尾)的内容:

select distinct  
   DIE_SIZE,
   -- 匹配从开头到X之前的所有非X字符
   regexp_substr(replace(replace(DIE_SIZE,' ',''),'x','X'), '^[^X]+', 1, 1) as die_x,
   -- 匹配X之后到结尾的所有非X字符
   regexp_substr(replace(replace(DIE_SIZE,' ',''),'x','X'), '[^X]+$', 1, 1) as die_y        
from ORD_DIE_LOT

方案二:按X分割取对应分段

把处理后的字符串按X拆成多个分段,直接取第1段(X前)和第2段(X后):

select distinct  
   DIE_SIZE,
   -- 取第1个非X分段(X前的数值)
   regexp_substr(replace(replace(DIE_SIZE,' ',''),'x','X'), '[^X]+', 1, 1) as die_x,
   -- 取第2个非X分段(X后的数值)
   regexp_substr(replace(replace(DIE_SIZE,' ',''),'x','X'), '[^X]+', 1, 2) as die_y        
from ORD_DIE_LOT

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:12:10