Sql server 如何通过sql server查询获取方括号[]中写入的文本
如何通过sql server查询获取方括号[]中写入的文本 输入:Sql server 如何通过sql server查询获取方括号[]中写入的文本,sql-server,Sql Server,如何通过sql server查询获取方括号[]中写入的文本 输入: test1/test2/test3[ab]/test4[c] 输出: ab c 范例 返回 在原始答案上,您使用以下逻辑- DECLARE @Test VARCHAR(MAX) = 'test1/test2/test3[ab]/test4[c]' DECLARE @TempTab TABLE ( Val VARCHAR(100) ) DECLARE @Loop INT = 1 DECLARE @St INT =
test1/test2/test3[ab]/test4[c]
输出:
ab
c
范例
返回
在原始答案上,您使用以下逻辑-
DECLARE @Test VARCHAR(MAX) = 'test1/test2/test3[ab]/test4[c]'
DECLARE @TempTab TABLE (
Val VARCHAR(100)
)
DECLARE @Loop INT = 1
DECLARE @St INT = 0
DECLARE @End INT = 0
WHILE @Loop <= (SELECT LEN(@Test))
BEGIN
IF SUBSTRING(@Test, @Loop, 1) = CASE WHEN @St = 0 THEN '[' ELSE ']' END
BEGIN
IF @St = 0
SET @St = @Loop + 1
ELSE
SET @End = @Loop
END
IF @St <> 0 AND @End <> 0
BEGIN
INSERT INTO @TempTab(Val)
SELECT SUBSTRING (@Test,@St,@End-@St)
SET @St = 0
SET @End = 0
END
SET @Loop = @Loop +1
END
SELECT * FROM @TempTab
应添加字符串\u分割udf函数源control@DanielN内置函数2016+@DanielN如果不是2016+,则可能有拆分/解析函数可用。实际上,任何人都会避免循环函数示例:
SomeCol NewValue
test1/test2/test3[ab]/test4[c] ab
test1/test2/test3[ab]/test4[c] c
DECLARE @Test VARCHAR(MAX) = 'test1/test2/test3[ab]/test4[c]'
DECLARE @TempTab TABLE (
Val VARCHAR(100)
)
DECLARE @Loop INT = 1
DECLARE @St INT = 0
DECLARE @End INT = 0
WHILE @Loop <= (SELECT LEN(@Test))
BEGIN
IF SUBSTRING(@Test, @Loop, 1) = CASE WHEN @St = 0 THEN '[' ELSE ']' END
BEGIN
IF @St = 0
SET @St = @Loop + 1
ELSE
SET @End = @Loop
END
IF @St <> 0 AND @End <> 0
BEGIN
INSERT INTO @TempTab(Val)
SELECT SUBSTRING (@Test,@St,@End-@St)
SET @St = 0
SET @End = 0
END
SET @Loop = @Loop +1
END
SELECT * FROM @TempTab