解码 sql 函数

Decoding a sql function

我正在处理一些有人写过但现在已经离开组织的查询。

首先,这是一个 table 值函数 - 有人可以帮助我理解它试图做什么。

ALTER FUNCTION [dbo].[udfSplitString]
(    
    @Input NVARCHAR(MAX),
    @Character CHAR(1)
)
RETURNS @Output TABLE (
    Item NVARCHAR(1000)
)
AS
BEGIN
    DECLARE @StartIndex INT, @EndIndex INT
 
    SET @StartIndex = 1
    IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character
    BEGIN
        SET @Input = @Input + @Character
    END
 
    WHILE CHARINDEX(@Character, @Input) > 0
    BEGIN
        SET @EndIndex = CHARINDEX(@Character, @Input)
         
        INSERT INTO @Output(Item)
        SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1)
         
        SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input))
    END
 
    RETURN
END

谢谢

一个 table 值函数,它根据分隔符将文本分成子字符串行。 Returns 单列 table,子字符串作为行。

值是列的名称。如果任何输入参数是 nvarchar 或 nchar,则此函数 returns nvarchar。否则,varchar 是 returned。 return 类型的长度与字符串参数的长度相同。例如:

因此,如 Paul 所述:查找所有函数调用以查看正在传递的内容。

STRING_SPLIT 输入一个包含分隔子字符串的字符串,并输入一个字符用作分隔符或分隔符。 STRING_SPLIT 输出单列 table,其行包含子字符串。输出列的名称是 value.