使用SUBSTRING和PATINDEX拆分字符串:最后一步求解
提取Column C的SQL解决方案
针对你提到的两种格式(P100+P200 和 SUMME(P400:P1200)),可以通过CASE分支判断格式类型来提取第三列(Column C)。结合你已有的代码,完整的第三列提取逻辑如下:
MAX( CASE -- 处理SUMME(XX:YY)格式:取冒号到右括号之间的内容 WHEN t3.formel LIKE 'SUMME(%' THEN SUBSTRING( t3.formel, PATINDEX('%[+:.-]%', t3.formel) + 1, LEN(t3.formel) - PATINDEX('%[+:.-]%', t3.formel) - 1 ) -- 处理XX+YY格式:取加号之后的所有内容 ELSE SUBSTRING( t3.formel, PATINDEX('%[+:.-]%', t3.formel) + 1, LEN(t3.formel) ) END ) AS "Formelteil 2" -- 对应你的Column C
逻辑说明:
- 分支判断:用
LIKE 'SUMME(%'识别求和格式的字符串,区分两种不同结构 - SUMME格式处理:因为字符串末尾有右括号
),截取时从符号位置+1开始,长度为总长度减去符号位置再减1(去掉最后一个括号) - 普通加减格式处理:直接截取符号位置+1到字符串结尾的内容即可
把这段代码和你已有的前两列代码整合,就能得到完整的三列结果。
内容的提问来源于stack exchange,提问作者Alexander Knapp
相关产品推荐
相关产品推荐

