文本SQL的动态提取

文本SQL的动态提取,sql,sql-server,substring,Sql,Sql Server,Substring,我有一个列,其中的值采用以下格式: Successfully refunded 1 units of product 11111111 Successfully refunded 1 units of product 22222222 Successfully refunded 1 units of product 33333333 Successfully refunded 1 units of product 55555555 Successfully refunded 1 units o

我有一个列,其中的值采用以下格式:

Successfully refunded 1 units of product 11111111
Successfully refunded 1 units of product 22222222 Successfully refunded 1 units of product 33333333 Successfully refunded 1 units of product 55555555 
Successfully refunded 1 units of product 44444444
Successfully refunded 1 units of product 67676767 
Successfully refunded 1 units of product 90909090 Successfully refunded 1 units of product 36456421
如何提取“产品”后面的数字。 当有一个“产品”时,提取很简单

预期结果:

11111111
22222222,33333333,55555555,44444444,
67676767
90909090,36456421

您只需更换几件即可:

结果:

Replaced
1111111
2222222,33333333,55555555,44444444
7676767
0909090,36456421

您只需更换几件即可:

结果:

Replaced
1111111
2222222,33333333,55555555,44444444
7676767
0909090,36456421
可以使用SUBSTRINGstring、start和length

范例

SELECT SUBSTRING("Successfully refunded 1 units of product 11111111", 41) AS ExtractString;
可以使用SUBSTRINGstring、start和length

范例

SELECT SUBSTRING("Successfully refunded 1 units of product 11111111", 41) AS ExtractString;

如果产品代码的长度始终相同,则只需执行以下操作:

select right(col, 8) as product_code
如果字符串可能不是这样的,那么用例:

如果您想要“产品”后面的内容:


如果产品代码的长度始终相同,则只需执行以下操作:

select right(col, 8) as product_code
如果字符串可能不是这样的,那么用例:

如果您想要“产品”后面的内容:


那么,你总是在“产品”之后,在“成功”之前,或者在“价值”的末尾,寻找下一个词?到目前为止你试过什么?但是,如果这是您存储数据的方式,我建议您需要修复数据模型,创建分隔列表不是解决方案。因此,您总是在“产品”一词之后、在“成功”一词或值结尾之前查找下一个词?到目前为止你试过什么?但是,如果这是存储数据的方式,我建议您需要修复数据模型,创建分隔列表不是解决方案。后续行如何?您建议为每行编写一个单独的子字符串表达式,这不是一个好的解决方案。是的,您可以像选择子字符串电子邮件一样使用它,4个来自用户成功退款1个产品单位在您的每行中,因此您可以使用它。后续行如何?您建议为每行编写一个单独的子字符串表达式,这不是一个好的解决方案。是的,您可以像选择子字符串电子邮件一样使用它,4个来自用户成功退款1个产品单位在您的每行中,因此您可以使用它。如果它显示2个产品单位,会发生什么?当然不会被替换。这表明了当发布一个问题时,一个完整而有意义的例子是多么重要,如果可能有这些值:如果它会说2个产品单位,会发生什么?当然不会被替换。这表明,如果可能存在以下值,则在发布问题时,完整且有意义的示例是多么重要:
select stuff(col, 1, charindex('product', col) + 7, '') as product_code