需要从字符串中提取整数

问题描述 投票:0回答:1

我有一个由字符串和整数混合而成的数据

E.g  DQ1-12987, DQQ-12367, DS18768, AS-10383B

我只需要从列中提取整数,但是如果数据在'-'之后有整数,则我不想考虑该整数。

e.g DQ1-12987 should be 12987 or DQQ-12387 should be as 12387

我正在使用下面的代码,但这没有给我正确的结果。

Create Function dbo.GetNumbers(@Data VarChar(8000))
Returns VarChar(8000)
AS
Begin 
    Return Left(
             SubString(@Data, PatIndex('%[0-9]%', @Data), 8000), 
             PatIndex('%[^0-9]%', SubString(@Data, PatIndex('%[0-9]%', @Data), 8000) + 'X')-1)
End

我该如何实现

sql tsql wildcard
1个回答
0
投票

这是您想要的吗?

select (case when v.data not like '%[0-9]%-%' and
                  v.data like '%[0-9]%'
             then left(v2.data, patindex('%[^0-9]%', v2.data + 'x') - 1)
        end)
from (values (@data)) v(data) cross apply
     (values (stuff(v.data, 1, patindex('%[0-9]%', v.data)) v2(data)
© www.soinside.com 2019 - 2024. All rights reserved.