Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从sql server中的字符串获取模式匹配的子字符串_Sql Server_Regex - Fatal编程技术网

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}

从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}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