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

使用SQL SUBSTRING与CHARINDEX拼接两列字符串片段的问题

问题排查与解决方案

问题原因

原有SQL逻辑错误出在第一个substring截取步骤:
第一列111-1001-0000-0000中存在重复的0000片段,你使用的charindex(right(@1stcolumn,charindex('-',reverse(@1stcolumn))),@1stcolumn)逻辑,是匹配最后一段0000在整串中第一次出现的位置,返回值对应111-1001-的结束位置,所以截取后直接丢失了第一列第三个分段的0000。

修正方案

改用按长度截取的逻辑,规避重复内容导致的匹配错误,直接按分隔符位置计算各分段的截取长度即可。

修正后SQL代码

Declare @1stcolumn nvarchar(30),@2ndcolumn nvarchar(30)

set @1stcolumn='111-1001-0000-0000'
            
set @2ndcolumn='453200-0000-000' 

select 
-- 取第一列除最后一段外的内容:111-1001-0000
left(@1stcolumn, len(@1stcolumn) - charindex('-', reverse(@1stcolumn)))
-- 拼接第二列第一段:453200
+ left(@2ndcolumn, charindex('-', @2ndcolumn) - 1)
-- 拼接第一列最后一段:0000
+ right(@1stcolumn, charindex('-', reverse(@1stcolumn)) - 1)
-- 拼接第二列除第一段外的内容:-0000-000
+ right(@2ndcolumn, len(@2ndcolumn) - charindex('-', @2ndcolumn) + 1)

运行结果

最终输出和你预期一致:111-1001-0000-453200-0000-0000-000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:15:03