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;
谢谢大家的帮助。