fnMakeVarCharTableFromStringWithEscape
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CharString | nvarchar(2000) | IN | |
@Delim | nvarchar(1) | IN | |
@escpChar | nvarchar(1) | IN |
Definition
Copy
CREATE function [dbo].[fnMakeVarCharTableFromStringWithEscape](@CharString nvarchar(2000), @Delim nvarchar(1), @escpChar nvarchar(1))
returns @CharTable TABLE([value] nvarchar(256))
as
BEGIN
DECLARE @currentChar nvarchar(1), @currentWord nvarchar(2000), @intPos integer, @len integer
DECLARE @escpMode bit
SET @escpMode = 0
SET @currentWord = ''
SET @intPos = 1
SET @len = len(@CharString)
WHILE @intPos <= @len
BEGIN
SET @currentChar = substring(@CharString,@intPos,1)
--SELECT @intPos '@intPos', @currentChar '@currentChar'
--if escape mode
IF ( @escpMode = 1 )
BEGIN
--add current char to current word
SET @currentWord = @currentWord + @currentChar
--exit escape mode
--SELECT 'EXIT ESCAPE MODE!!!!'
SET @escpMode = 0
END
--if not escape mode
ELSE
BEGIN
--if current char = delim, cut word
IF ( @currentChar = @Delim )
BEGIN
INSERT INTO @CharTable SELECT @currentWord
SET @currentWord = ''
END
ELSE
BEGIN
--if current char = escape char, forget current char and enter escape mode
IF ( @currentChar = @escpChar )
BEGIN
--SELECT 'ENTER ESCAPE MODE!!!!'
SET @escpMode = 1
END
ELSE
--else add current char to current word
BEGIN
--add current char to current word
SET @currentWord = @currentWord + @currentChar
END
END
END
--SELECT @currentWord '@currentWord'
SET @intPos = @intPos + 1
END
--last word management
IF ( len(@currentWord) > 0 )
BEGIN
INSERT INTO @CharTable SELECT @currentWord
SET @currentWord = ''
END
RETURN
END