使用 SQL Server,如何拆分字符串以便可以访问项目 x?
取一个字符串“Hello John Smith”。如何按空格拆分字符串并访问索引 1 处应返回“John”的项目?
原文由 GateKiller 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 SQL Server,如何拆分字符串以便可以访问项目 x?
取一个字符串“Hello John Smith”。如何按空格拆分字符串并访问索引 1 处应返回“John”的项目?
原文由 GateKiller 发布,翻译遵循 CC BY-SA 4.0 许可协议
@Aaron Bertrand 的修改功能
CREATE FUNCTION [dbo].[SplitString]
(
@List NVARCHAR(MAX),
@Delim VARCHAR(255),
@Idx int
)
RETURNS NVARCHAR(1000)
AS
BEGIN
DECLARE @ValueTable TABLE(String NVARCHAR(50), Ind int)
DECLARE @Value NVARCHAR(50)
BEGIN
INSERT INTO @ValueTable
SELECT Value, idx FROM
(SELECT [Value], idx = RANK() OVER (ORDER BY n) FROM
(
SELECT n = Number,
[Value] = LTRIM(RTRIM(SUBSTRING(@List, [Number],
CHARINDEX(@Delim, @List + @Delim, [Number]) - [Number])))
FROM
(SELECT Number = ROW_NUMBER() OVER (ORDER BY name)
FROM sys.all_objects) AS x
WHERE Number <= LEN(@List)
AND SUBSTRING(@Delim + @List, [Number], LEN(@Delim)) = @Delim
) AS y
) AS R WHERE idx = @Idx
SET @Value = (SELECT String FROM @ValueTable)
END
RETURN @Value
END
GO
原文由 Josef B. 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答2.5k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
463 阅读
828 阅读
您可能会在 _SQL User Defined Function to Parse a Delimited String_ 中找到有用的解决方案(来自 The Code Project )。
您可以使用这个简单的逻辑: