我是一名新手SQL Server,正在处理以下问题。
假设我有一个看起来像这样的列:
我尝试使用这段代码:
假设我有一个看起来像这样的列:
ID String
-------------------------
1 Today is a good day!
2 Whatever
3 Hello my friend
我的目标是将这些句子分成以下几个部分:
ID String1 String2 String3 String4 String5
------------------------------------------------------
1 Today is a good day!
2 Whatever
3 Hello my friend
我尝试使用这段代码:
CREATE FUNCTION [dbo].[SplitString]
(@str nvarchar(max),
@separator char(1))
RETURNS TABLE
AS
RETURN (
WITH tokens(p, a, b) AS
(
SELECT
CAST(1 AS BIGINT),
CAST(1 AS BIGINT),
CHARINDEX(@separator, @str)
UNION ALL
SELECT
p + 1,
b + 1,
CHARINDEX(@separator, @str, b + 1)
FROM
tokens
WHERE
b > 0
)
SELECT
--p-1 ItemIndex,
SUBSTRING(@str, a,
CASE WHEN b > 0 THEN b-a
ELSE LEN(@str)
END) AS Item
FROM tokens)
GO
我在Stackoverflow上找到了下面的内容。
它似乎对于单个字符串有效,但无法处理多个字符串。 并且它会将每个单词放在新行中,就像这样:
Item
Today
is
a
good
day!
那么我该如何调整代码,使其达到预期效果呢?
还有一个问题是,我不知道每个字符串中有多少个单词。
所以,它可能会有所不同,例如从1个单词到100个单词。
如果有人能帮我解决这个问题,我将非常感激,因为我刚开始学习如何使用SQL。
谢谢! MG