【发布时间】:2025-12-31 21:30:01
【问题描述】:
我有一个字符串,我需要返回双引号之间的字符
'(("名称 1" 和 "名称 2") 或 "名称 3")
我要回去
Name 1
Name 2
Name 3
我已经使用下面的函数来拆分字符串,但是我得到了 (( 以及 Or 和 AND 等 .. 我不想要,不幸的是我不能确定所有其他可能的字符包括在内,因此删除或替换它们实际上并不可行。
ALTER FUNCTION [dbo].[fn_SplitString]
(
@string NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @output TABLE(ID int, splitdata NVARCHAR(MAX)
)
BEGIN
DECLARE @start INT, @end INT, @Count INT
set @Count = 1
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
WHILE @start < LEN(@string) + 1 BEGIN
IF @end = 0
SET @end = LEN(@string) + 1
INSERT INTO @output (ID, splitdata)
VALUES(@Count, SUBSTRING(@string, @start, @end - @start))
SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)
Set @Count = @Count+1
END
RETURN
END
我知道这段代码会返回两个分隔符之间的字符串
substring( LEFT(@String, charindex(']', @String)-1), CHARINDEX('[', @String) + len('['), LEN(@String))
有没有什么方法可以将 2 组合起来并返回所需的输出?
谢谢
【问题讨论】:
标签: sql sql-server tsql