首页 > 解决方案 > 派生列的问题

问题描述

我正在尝试拆分一列,我想要逗号后面的值。以下是列的值:

Managing Partner                                                       
Director, Enterprise Architect                                           
Manager, Storage Services

并非所有值都有逗号。

我在 SSIS 中使用派生列,代码如下:

(LTRIM(SUBSTRING([Title ],FINDSTRING([Title ],",",1) + 1,LEN([Title ])))) 

我遇到的问题是没有逗号的值,我在新列中获取了整个字符串。

标签: ssis

解决方案


LEFT如果您从表中查询数据,您可以简单地通过and将字符串分解为其部分RIGHT

SELECT title
      ,CASE WHEN CHARINDEX(',',[title]) > 0 THEN LEFT(title,CHARINDEX(',',[title])-1) ELSE title END AS Title_Left
      ,CASE WHEN CHARINDEX(',',[title]) > 0 THEN RIGHT(title,len(title)-CHARINDEX(',',[title])) END AS Title_Right
  FROM test

详情见小提琴:http ://sqlfiddle.com/#!18/b1dfa/1/1

如果您需要处理其他输入,例如平面文件或类似文件,您可以将相应的处理添加到派生列(如果字符串不包含逗号,则将整个字符串输出为第 1 列,否则逗号之前的左侧字符;类似右边部分:如果不包含逗号,则将该列留空,否则从逗号后面到字符串末尾输出字符串的右边部分。


推荐阅读