Как разбить строку и получить значения NULL вместо пустой строки.
Меня особенно интересуют два метода STRING_SPLIT
и XML
.Я хотел бы этот запрос:
SELECT * FROM STRING_SPLIT('a,b,,d', ',');
вернется в третьей строке NULL
вместо пустой строки.Есть ли простой способ добиться этого, например, с помощью специальных символов?Я имею в виду что-то вроде:
SELECT * FROM STRING_SPLIT('a,b,[null],d', ',') -- this, of course, wouldn't go
Я бы хотел извлечь NULL из строки, используя XML
метод:
CREATE FUNCTION dbo.SplitStrings_XML
(
@List varchar(8000),
@Delimiter char(1)
)
RETURNS TABLE WITH SCHEMABINDING
AS
RETURN (SELECT [value] = y.i.value('(./text())[1]', 'varchar(8000)')
FROM (SELECT x = CONVERT(XML, '<i>'
+ REPLACE(@List, @Delimiter, '</i><i>')
+ '</i>').query('.')
) AS a CROSS APPLY x.nodes('i') AS y(i));
Код, полученный здесь: https://sqlperformance.com/2016/03/t-sql-queries/string-split