Кастомные методы в SQL

Подскажите как создать свой метод для сборки ФИО в фамилию и инициалы? Просто пример с возвращением вычисляемых свойств и инициализацией. Интересует именно синтаксис написания функции.

Пример метода:

CREATE FUNCTION assemblerFullname (@Fullname VARCHAR(MAX))
    DECLARE @first_name VARCAR(50) = TRIM(SUBSTRING(@Fullname, 1, CHARINDEX(' ', @Fullname)))
RETURNS @first_name

Запрос в котором есть два поля с ФИО (assigner.fullname, assigner.fullname), предполагал что в SELECT в вывод полей, возможно добавить метод который обработает ФИО в нужный мне результат.

SELECT 
        ts.id,
        ts.name,
        ts.assigner_id,
        assigner.fullname,
        ts.executor_id,
        assigner.fullname,
        ts.status,
        ts.value,
        ts.date_plan,
        ts.end_date_plan,
        role.value('(/task/plan)[1]', 'VARCHAR(MAX)') AS description
    FROM tasks AS ts
    LEFT JOIN task AS t ON t.id = ts.id
    LEFT JOIN collaborators AS assigner ON assigner.id = ts.assigner_id
    LEFT JOIN collaborators AS executor ON executor.id = ts.executor_id
    CROSS APPLY t.data.nodes('/task/role_id') AS field(role)
    WHERE role.value('(/task/role_id)[1]', 'BIGINT') = 7459373706232529779

Ответы (1 шт):

Автор решения: Andrei Khotko

Синтаксис написания функции можно посмотреть в документации по SQL Server, там есть примеры.

Как выглядит правильный синтаксис создания вашей функции:

CREATE FUNCTION dbo.assemblerFullname (@Fullname VARCHAR(MAX))
RETURNS VARCHAR(50)
AS BEGIN
  DECLARE @first_name VARCHAR(50) = TRIM(SUBSTRING(@Fullname, 1, CHARINDEX(' ', @Fullname)))
  RETURN @first_name
END

Использование в запросе:

SELECT 
        dbo.assemblerFullname(assigner.fullname) AS first_name
FROM ...

P.S. То, что вы называете методом в своем вопросе, на деле является функцией. Не используйте слово "метод" в данном контексте, вас не поймут коллеги.

→ Ссылка