Sql server 从sql server中的字符串获取模式匹配的子字符串
从SQL server中的字符串获取模式匹配的子字符串 例如,我的字符串是Sql server 从sql server中的字符串获取模式匹配的子字符串,sql-server,regex,Sql Server,Regex,从SQL server中的字符串获取模式匹配的子字符串 例如,我的字符串是'Test{Ab}{CV}Ad testing' 我需要去掉上面的字符串'Ab'和'CV',它们在'{}' 我需要在不带括号的情况下输出,并在行中选择子字符串 DECLARE @Template NVARCHAR(MAX) = 'Test{Ab}{CV}Ad testing' 即使您有两个以上的{}占位符,以下操作也会起作用: DECLARE @Template NVARCHAR(MAX) = 'Test{Ab}{CV}
'Test{Ab}{CV}Ad testing'
我需要去掉上面的字符串'Ab'
和'CV'
,它们在'{}'
我需要在不带括号的情况下输出,并在行中选择子字符串
DECLARE @Template NVARCHAR(MAX) = 'Test{Ab}{CV}Ad testing'
即使您有两个以上的{}占位符,以下操作也会起作用:
DECLARE @Template NVARCHAR(MAX) = 'Test{Ab}{CV}Ad testing'
DECLARE @counter INT = 1
DECLARE @inside INT = 0
DECLARE @curr VARCHAR(1) = ''
DECLARE @output VARCHAR(MAX) = ''
WHILE(@counter < LEN(@Template))
BEGIN
SET @curr = SUBSTRING(@Template, @counter, @counter)
SET @inside = CASE
WHEN @curr = '{' THEN 1
WHEN @curr = '}' THEN 0
ELSE @inside
END
SET @output = CASE
WHEN @inside = 1 THEN @output + @curr
WHEN @curr = '}' THEN @output + @curr + '_'
ELSE @output
END
SET @counter = @counter + 1
--SELECT @curr, @inside, @output
END
SELECT * FROM STRING_SPLIT( @output ,'_')
DECLARE@Template NVARCHAR(MAX)='Test{Ab}{CV}Ad testing'
声明@counter INT=1
声明@insideint=0
声明@curr VARCHAR(1)=”
声明@output VARCHAR(MAX)=“”
而(@计数器
可能的重复项您正在寻找仅使用正则表达式的解决方案吗?您可以在不使用RegEx的情况下获得所需的结果。我只需要结果,无论是否使用RegEx,您的SQL Server版本是什么?Microsoft SQL Server Management Studio 11.0.2100.60