Кастомные методы в 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 шт):
Синтаксис написания функции можно посмотреть в документации по 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. То, что вы называете методом в своем вопросе, на деле является функцией. Не используйте слово "метод" в данном контексте, вас не поймут коллеги.