Как я могу преобразовать функцию разделения в встроенную табличную udf в SQL-сервере?

Предполагая, что у меня есть этот запрос (псевдо):

Select T.a,
       T.b, 
       (select top 1 element from fn_split(c,',') where element=T.element)
From largeTable T

кудаfn_split работает для каждой строки, я хотел бы использовать встроенную таблицу со значением udf, так что производительность будет лучше.

NB:fn_split просто создать таблицу с помощью, :

Но глядя на встроенную таблицу ценится udfсостав :

create FUNCTION [dbo].[fn_...]
(
    ...
)
RETURNS table
AS
RETURN  SELECT ...(!!!)

Он должен вернуть выбор сразу как первое утверждение!

Но что, если мой UDF выглядит так:

CREATE FUNCTION [dbo].[FN_Split] 
(
    @InDelimitedString varchar(max),
    @InDelimiter       varchar(10) 
)
RETURNS 
    @tblArray TABLE 
    (
        ElementID  smallint IDENTITY(1,1), 
        Element    varchar(1000)
    )

AS
BEGIN

    DECLARE @StrPos smallint,
    @StrStart smallint,
    @DelimiterLength smallint

    SET @DelimiterLength = LEN(@InDelimiter)    

    WHILE LEN(@InDelimitedString) > 0
        BEGIN
         --Removed for clarity . do some CHARINDEX  manipulation ETc.
        END

    RETURN 
END

Вопрос:

Я не могу вернутьсяselect сразу, но все же, я хочу изменитьfn_split встроенная таблица оценена в формате udf.

Как мне это сделать ?

Ответы на вопрос(1)

Ваш ответ на вопрос