如何在Microsoft SQL Server中将文本拆分为行(或单词)?
我搜索并找到了新的STRING_SPLIT
,但是尝试后发现它实际上并没有按照我的预期工作:
DECLARE @text NVARCHAR(100)
SET @text = 'This is line 1.' + CHAR(13) + 'This is line 2.'
SELECT STRING_SPLIT(@text, CHAR(13));
-- 'STRING_SPLIT' is not a recognized built-in function name.
也就是说,新的STRING_SPLIT
是一个表而不是一个函数。
那么,如何在Microsoft SQL Server中将文本分成几行?
答案 0 :(得分:2)
您可以通过以下方式创建功能:
CREATE FUNCTION dbo.SPLIT(
@delimited NVARCHAR(MAX),
@delimiter NVARCHAR(100)
) RETURNS @t TABLE (id INT IDENTITY(1,1), val NVARCHAR(MAX))
AS
BEGIN
DECLARE @xml XML
SET @xml = N'<t>' + REPLACE(@delimited,@delimiter,'</t><t>') + '</t>'
INSERT INTO @t(val)
SELECT r.value('.','varchar(MAX)') as item
FROM @xml.nodes('/t') as records(r)
RETURN
END
然后像这样使用:
SELECT * FROM [dbo].[SPLIT] ('Lorem ipsum dolor sit amet.', ' ')
结果是:
1 Lorem
2 ipsum
3 dolor
4 sit
5 amet.
答案 1 :(得分:0)
您可以使用xml如下所示
DECLARE @xml as xml,@str as varchar(100),@delimiter as varchar(10)
SET @str='Lorem ipsum dolor sit amet.'
SET @delimiter =' '
SET @xml = cast(('<X>'+replace(@str,@delimiter ,'</X><X>')+'</X>') as xml)
SELECT N.value('.', 'varchar(10)') as value FROM @xml.nodes('X') as T(N)