我正在使用以下函数将字符串分割成行。这个函数比我之前使用的函数快得多,但是我需要更快地处理这些数据(这是一个ETL作业):
ALTER FUNCTION [dbo].[ArrayToTable]
(
@InputString VARCHAR(MAX) = ''
, @Delimitter VARCHAR(1) = ','
)
RETURNS @RESULT TABLE([Position] INT IDENTITY, [Value] VARCHAR(MAX))
AS
BEGIN
DECLARE @XML XML
SELECT @XML = CONVERT(XML, SQL_TEXT)
FROM (
SELECT '<root><item>'
+ REPLACE(@InputString, @Delimitter, '</item><item>')
+ '</item></root>' AS SQL_TEXT
) dt
INSERT INTO @RESULT([Value])
SELECT t.col.query('.').value('.', 'VARCHAR(1000)') AS [Value]
FROM @XML.nodes('root/item') t(col)
RETURN
END
有没有更好、更快的方法将分隔符字符串转换为行?我在查询中使用 cross apply
来连接这些结果。
有没有更高效的方法将分隔符字符串转换为行?