STRING_SPLIT Функция не поддерживает более низкую версию сервера sql, поэтому сначала создайте функцию для разбиения заданной строки и присоедините функцию к вашему запросу select. Ниже приведен пример ожидаемого результата.Созданная пользовательская функция
CREATE FUNCTION [dbo].[Udf_StringSplit]
(
@Userid INT,
@Value VARCHAR(1000)
)
RETURNS @Result TABLE(
Userid INT,
Value VARCHAR(10)
)
AS BEGIN
DECLARE @Data AS TABLE
(
Userid INT,
Value VARCHAR(100)
)
INSERT INTO @Data(Userid,Value)
SELECT @Userid, @Value
INSERT INTO @Result(Userid,Value)
SELECT Userid,
Split.a.value('.','nvarchar(1000)') AS Value
FROM
(
SELECT Userid,
CAST('<S>'+REPLACE(@Value,',','</S><S>')+'</S>' AS XML) Value
FROM @Data
) AS A
CROSS APPLY Value.nodes('S') AS Split(a)
WHERE Userid=@Userid AND Split.a.value('.','nvarchar(1000)') <>''
RETURN
END
GO
Пример таблицы данных
DECLARE @Data AS TABLE(Userid INT , Value VARCHAR(100))
INSERT INTO @Data
SELECT 1,'A,B,C,D,' UNION ALL
SELECT 2,'F,H'
Sql-скрипт для получения ожидаемого результата
SELECT d.Userid,
f.Value
FROM @Data d
CROSS APPLY [dbo].[Udf_StringSplit] (d.Userid,d.Value) AS f
WHERE d.Userid=1
GO
Результат
Userid Value
------------
1 A
1 B
1 C
1 D