- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- -- =============================================
- -- Author: Insus.NET
- -- Create date: 2019-05-27
- -- Update date: 2019-05-27
- -- Description: 分割字符串
- -- =============================================
-
- CREATE FUNCTION [dbo].[tvf_SplitStringAsTwoField]
- (
- @Source NVARCHAR(MAX)
- )
- RETURNS @returnResult TABLE
- (
- [From] INT NOT NULL,
- [To] INT NOT NULL
- )
- AS
- BEGIN
- SET @Source = @Source + N',';
- IF CHARINDEX(',',@Source) > 0
- BEGIN
- WHILE CHARINDEX(',', @Source) > 0
- BEGIN
- DECLARE @CutoutString NVARCHAR(MAX) = SUBSTRING(@Source, 0, CHARINDEX(',', @Source))
- SET @Source = LTRIM(RTRIM(SUBSTRING(@Source, CHARINDEX(',', @Source) + 1, LEN(@Source))))
- DECLARE @from INT,@to INT
- SELECT TOP 1 @from = [From], @to = ([To]) FROM @returnResult ORDER BY [From] DESC
-
- IF @from IS NULL AND @to IS NULL
- INSERT INTO @returnResult ([From],[To]) VALUES(@CutoutString,@CutoutString)
- ELSE
- BEGIN
- IF @to + 1 = CAST(@CutoutString AS INT)
- UPDATE @returnResult SET [To] = @CutoutString WHERE [From] = @from
- ELSE
- INSERT INTO @returnResult ([From],[To]) VALUES(@CutoutString,@CutoutString)
- END
- END
- END
- ELSE
- INSERT INTO @returnResult ([From],[To]) VALUES(@Source,@Source)
- RETURN
- END
- GO