在SQL Server 2017中,可以使用以下方法按回车和换行符分割列:
方法一:使用STRING_SPLIT函数
DECLARE @inputString NVARCHAR(MAX) = 'Value1
Value2
Value3';
SELECT value AS ColumnValue
FROM STRING_SPLIT(@inputString, CHAR(13) + CHAR(10));
方法二:使用XML和CROSS APPLY
DECLARE @inputString NVARCHAR(MAX) = 'Value1
Value2
Value3';
SELECT ColumnValue
FROM (SELECT CAST('' + REPLACE(@inputString, CHAR(13) + CHAR(10), ' ') + ' ' AS XML)) AS T
CROSS APPLY (
SELECT x.value('.', 'VARCHAR(MAX)') AS ColumnValue
FROM T.nodes('x') AS X(x)
) AS CA;
在这两种方法中,我们首先将包含回车和换行符的字符串赋值给一个变量(@inputString)。然后,我们使用STRING_SPLIT函数或XML和CROSS APPLY来将字符串分割成多行,并将每行作为一个单独的列返回。
请注意,方法一使用STRING_SPLIT函数需要SQL Server 2016或更高版本。方法二使用XML和CROSS APPLY可在较早的版本中使用。