В последнее время обнаружил для себя много удобных функций языка запросов T-SQL. Жаль только, что большинство из них работает только с современными версиями SQL сервера. Вот, например, функция STRING_SPLIT:
На её основе я создал табличную функцию и планирую её использовать там, где раньше приходилось задавать отдельные переменные для каждого случая. Если интересно, вот код с примером использования:
/*
=============================================
Author: Алексей Васильев
Create date: 26.05.2021
Description: Функция преобразует строку значений, разделённых запятыми в таблицу со значениями (префиксами) и их длиной
Может быть использована, например, в ситуации, когда нужно получить список поставщиков, коды которых начинаются с разных
префиксов разной длины, например, "D_", "INT", "EMPL"
Пример использования:
select * from PL013100 (nolock)
join (
select * from usr_fn_Prefixes ('D_,EMPL,INT')
) prefixes
on left([PL01001],[PrefixLength])=[Prefix]
=============================================
*/
CREATE FUNCTION usr_fn_Prefixes (@Prefix nvarchar(max))
RETURNS TABLE
AS
RETURN
(
select [value] as [Prefix], len([value]) as [PrefixLength] FROM STRING_SPLIT(@Prefix, ',')
);
GO
Пользуйтесь на здоровье 🙂