You need to enable JavaScript to run this app. VS2008环境下SSIS使用派生列拆分逗号分隔列报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

VS2008环境下SSIS使用派生列拆分逗号分隔列报错如何解决

问题根因

你拆分姓的表达式中调用FINDSTRING(datosna, ",", 2)查找第2个逗号,但你的姓名字段格式为名, 姓,整段仅存在1个逗号,FINDSTRING找不到指定序号的匹配项时会返回0,代入长度计算后会得到负数,而SUBSTRING函数的长度参数不支持负数,因此触发报错。

正确派生列表达式

姓拆分修正表达式

SUBSTRING(datosna, FINDSTRING(datosna, ",", 1) + 1, LEN(datosna) - FINDSTRING(datosna, ",", 1))

直接用字段总长度减去第一个逗号的位置,就能得到姓的总长度,不需要找不存在的第二个逗号。

可选:边界异常兼容

如果存在部分数据无逗号的异常情况,可以加条件判断避免报错:

  • 名的兼容表达式:
FINDSTRING(datosna, ",", 1) > 0 ? SUBSTRING(datosna, 1, FINDSTRING(datosna, ",", 1) - 1) : datosna
  • 姓的兼容表达式:
FINDSTRING(datosna, ",", 1) > 0 ? TRIM(SUBSTRING(datosna, FINDSTRING(datosna, ",", 1) + 1, LEN(datosna) - FINDSTRING(datosna, ",", 1))) : ""

这里额外加了TRIM函数,用来去掉逗号和姓之间的多余空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 01:06:03