我有一个像'sdf,11-df,12-asd,sadfsdf'
这样的字符串。但我只需要这个字符串中的数字,如下所示。
我需要(,)和( - )之间的数字,这是实际要求。字符串可以像'sd47f,11-df,12-asd,sadfsdf,12-ds,32-fsdfsd',但数字总是在(,)和( - )之间
或在(,)和( - )之间找到数字也会对我有帮助。
提前致谢。 我需要任何解决方案的人请帮助,
答案 0 :(得分:3)
试试这个
DECLARE @data nvarchar(max) = 'sdf,11-df,12-asd,sadfsdf'
select substring(@data,PATINDEX('%[0-9]%',@data),2)
union all
select substring(@data,PATINDEX('%[-]%',REVERSE(@data))-1,2)
<强>更新强>
您还可以使用以表格形式返回的函数
CREATE FUNCTION dbo.udf_GetNumeric (@strAlphaNumeric VARCHAR(256))
RETURNS TABLE AS RETURN ( select LEFT(value,2) as Value from
string_split(@strAlphaNumeric,',') where PATINDEX('%[0-9]-%',value)
> 0 )
END GO
SELECT * from
dbo.udf_GetNumeric('sd47f,11-df,12-asd,sadfsdf,12-ds,32-fsdfsd')
答案 1 :(得分:3)
以下内容适用于SQL Server 2016或更高版本:
DECLARE @str varchar(50) = 'sd47f,11-df,12-asd,sadfsdf,12-ds,32-fsdfsd'
SELECT
LEFT(Value, CHARINDEX('-', Value)-1)
FROM STRING_SPLIT(@str, ',')
WHERE PATINDEX('%[0-9]-%',Value) > 0