1 SQL SERVER 实现字符串分割成table的方法
Posted 白羽轻飘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1 SQL SERVER 实现字符串分割成table的方法相关的知识,希望对你有一定的参考价值。
CREATE FUNCTION [dbo].[fn_SplitStringToTable] ( @p_Input VARCHAR(MAX), @p_Delimeter CHAR(1) = ‘,‘ ) RETURNS @l_Table TABLE ( Id INT IDENTITY(1, 1), Value VARCHAR(511), Position INT, Length INT ) BEGIN DECLARE @l_Position INT, @l_Value VARCHAR(256) SELECT @l_Position = 1, @l_Value = ‘‘ IF RIGHT(@p_Input, LEN(@p_Delimeter)) <> @p_Delimeter SET @p_Input = @p_Input + @p_Delimeter WHILE SUBSTRING(@p_Input, @l_Position, 1) = CHAR(10) OR SUBSTRING(@p_Input, @l_Position, 1) = CHAR(13) BEGIN SELECT @l_Position = @l_Position + 1 END WHILE @l_Position <= CHARINDEX(@p_Delimeter, @p_Input, @l_Position) BEGIN SET @l_Value = RTRIM ( LTRIM ( SUBSTRING ( @p_Input, @l_Position, CHARINDEX ( @p_Delimeter, @p_Input, @l_Position) - @l_Position ) ) ) IF NOT EXISTS ( SELECT 1 FROM @l_Table WHERE Value = @l_Value ) BEGIN INSERT INTO @l_Table ( Value, Position, Length ) VALUES ( @l_Value, @l_Position, CHARINDEX ( @p_Delimeter, @p_Input, @l_Position ) - @l_Position ) END SELECT @l_Position = CHARINDEX(@p_Delimeter, @p_Input, @l_Position) + 1 WHILE SUBSTRING(@p_Input, @l_Position, 1) = CHAR(10) OR SUBSTRING(@p_Input, @l_Position, 1) = CHAR(13) BEGIN SELECT @l_Position = @l_Position + 1 END END RETURN END
以上是关于1 SQL SERVER 实现字符串分割成table的方法的主要内容,如果未能解决你的问题,请参考以下文章