SQL 查询,用于从以下字符串中检索 2 位数字



SQL 查询,从以下字符串中检索 2 位数字

字符串 --> '部分:[64][95]'

输出应采用以下格式。

64,95

可以多次使用replace()函数来替换字符串的一部分。

在下面的示例中,我为您的示例字符串设置了一个声明的变量:

DECLARE @mystring varchar(100) = 'Partial:[64][95]'
SELECT REPLACE(REPLACE(REPLACE(@mystring, 'Partial:[', '')
, '][', ',')
, ']', '') AS [answer]

产生输出:

answer
------
64,95

使用replace()

select *, replace(replace(replace(Partial, '][', ','), '[', ''), ']', '')
from table t;

但是,这将减少通过 TRANSLATE(( 的嵌套替换,但可从SQL Server 2017.

我能够通过以下查询获得结果。

DECLARE @string VARCHAR(100);
SET @string = 'Partial:[64][95]';
WHILE PATINDEX('%[^0-9]%', @string) <> 0
SET @string = STUFF(@string, PATINDEX('%[^0-9]%', @string), 1, '');
DECLARE @splitstring NVARCHAR(20) = @string;
DECLARE @i INT = 3;
WHILE @i < LEN(@splitstring)
BEGIN
SELECT @splitstring = STUFF(@splitstring, @i, 0, ',');
SET @i = @i +3;
END;
SELECT @splitstring;

谢谢大家的帮助。

最新更新