Sql server 从一列中提取字符,并将其填充到ssis派生列的两个不同列中

Sql server 从一列中提取字符,并将其填充到ssis派生列的两个不同列中,sql-server,ssis,etl,ssis-2012,Sql Server,Ssis,Etl,Ssis 2012,我有一个列ProductDetails,它的值如下 j Jameson Mbc 6.5, abc 8 abc blah Napa california Mbc 1 abc 3.5 Washington k Mbc 2.5 abc 6 New york city is awesome 我有数千张唱片 我想填充另外两列Mbc和abc,如下所示 Mbc 6.5 1 2.5 abc 8 3.5 6 我尝试了(DT_STR,101252)子字符串(ProductDetails,findstring(

我有一个列ProductDetails,它的值如下

j Jameson Mbc 6.5, abc 8 abc blah
Napa california Mbc 1 abc 3.5
Washington k Mbc 2.5 abc 6
New york city is awesome
我有数千张唱片

我想填充另外两列Mbc和abc,如下所示

Mbc
6.5
1
2.5

abc
8
3.5
6
我尝试了
(DT_STR,101252)子字符串(ProductDetails,findstring(“Mbc”,ProductDetails,1)+4,3)

对于abc=
(DT_STR,101252)子字符串(ProductDetails,findstring(“abc”,ProductDetails,1)+4,3)

我得到了结果,一些值是
1C
2b
等,只需要数字而不需要字符

对于列值,例如
纽约城太棒了
我们只想用
Null
等填充它

谢谢“abc”栏目

FINDSTRING( [ProductDetails],"abc", 1 ) > 0 ? SUBSTRING(SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"abc", 1 ) + 4 , 3),1,LEN( SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"abc", 1 ) + 4 , 3) ) - FINDSTRING( SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"abc", 1 ) + 4 , 3) ," ",1)) : NULL(DT_WSTR,50)
FINDSTRING( [ProductDetails],"Mbc", 1 ) > 0 ? SUBSTRING(SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"Mbc", 1 ) + 4 , 3),1,LEN( SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"Mbc", 1 ) + 4 , 3) ) - FINDSTRING( SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"Mbc", 1 ) + 4 , 3) ," ",1)) : NULL(DT_WSTR,50)
“Mbc”列

FINDSTRING( [ProductDetails],"abc", 1 ) > 0 ? SUBSTRING(SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"abc", 1 ) + 4 , 3),1,LEN( SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"abc", 1 ) + 4 , 3) ) - FINDSTRING( SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"abc", 1 ) + 4 , 3) ," ",1)) : NULL(DT_WSTR,50)
FINDSTRING( [ProductDetails],"Mbc", 1 ) > 0 ? SUBSTRING(SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"Mbc", 1 ) + 4 , 3),1,LEN( SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"Mbc", 1 ) + 4 , 3) ) - FINDSTRING( SUBSTRING([ProductDetails], FINDSTRING( [ProductDetails],"Mbc", 1 ) + 4 , 3) ," ",1)) : NULL(DT_WSTR,50)

很晚了,但是谢谢,它确实起作用了。我有一段时间没有登录。