0

我的数据有一个数字,我需要提取该数字通常后跟“sh-”,如果其中没有任何“sh-”,则应返回null。我拥有的数据样本是这样的:

Tnsf 来自 sh-849116 Act-13383.38 Unam-13383.38 04/12/12

来自 sh-849116 Act() Unam() 的 Tnsf 2012 年 4 月 12 日

系统添加,以适应开始日期不在季度开始的事实。来自 sh-849116 Act() Unam() 的 Tnsf 2012 年 4 月 12 日

SAP 中的重新分类付款至洗车材料代码。无法删除 FORECOURT 付款,因为它已经支付了。

阿莫改变。见文件。CAS 5.21.10*Tnsf 来自 sh-849116 Act-12451.20 Unam-12451.20 04/12/12*

输出应该是:

84916

84916

84916

无效的

84916

提前谢谢你

我已经编辑过了

4

2 回答 2

1

这将为您提供以下数字sh-

DECLARE @string VARCHAR(255) = 'Tnsf from sh-849116 Act-13383.38 Unam-13383.38 04/12/12'
SELECT SUBSTRING(@string,CHARINDEX('sh-',@string)+3,CHARINDEX(' ',@string,CHARINDEX('sh-',@string))-CHARINDEX('sh-',@string)-3)

在您的查询中,如果不在每一行上,我将添加一条CASE语句:sh-

SELECT CASE WHEN CHARINDEX('sh-',StringField) > 0 
            THEN SUBSTRING(StringField,CHARINDEX('sh-',StringField)+3,CHARINDEX(' ',StringField,CHARINDEX('sh-',StringField))-CHARINDEX('sh-',StringField)-3)
       END
FROM YourTable
于 2013-08-09T18:30:50.793 回答
0
     Declare @string nvarchar(250)

    select @string='Tnsf from sh-849116 Act-13383.38 Unam-13383.38 04/12/12'

     SELECT SUBSTRING(@string,CHARINDEX('sh-',@string)+3,6)
于 2013-08-09T19:19:15.767 回答