【发布时间】:2019-03-14 05:09:37
【问题描述】:
所以基本上我希望将一根长字符串切成小块,但要保持单词完整。因此,如果我在JumpColumn列中的FoxTable中有以下句子:
棕色的狐狸跳过了懒惰的狗,然后懒惰的狗跳过了棕色的狐狸
我想在 SQL 中将其拆分为最多 20 个字符(包括空格)。所以结果会是这样的:
the brown fox jumped
over the lazy dog
and then the lazy
dog jumped over the
brown fox
但是,请记住,JumpColumn 列中有不同的句子,具有不同的长度和单词。
我的查询现在所做的是使用 SQL-Server 中的 SUBSTRING 函数将其分成不同的行。
DECLARE @string_part1 NVARCHAR(500),
@string_part2 NVARCHAR(500),
@string_part3 NVARCHAR(500),
@string_part4 NVARCHAR(500),
@string_part5 NVARCHAR(500),
@LoopCount = 1
WHILE (@LoopCount <= 100)
BEGIN
SELECT
string_part1 NVARCHAR(500) = SUBSTRING(JumpColumn, 0, 20)
,string_part2 NVARCHAR(500) = SUBSTRING(JumpColumn, 20, 20)
,string_part3 NVARCHAR(500) = SUBSTRING(JumpColumn, 40, 20)
,string_part4 NVARCHAR(500) = SUBSTRING(JumpColumn, 60, 20)
,string_part5 NVARCHAR(500) = SUBSTRING(JumpColumn, 80, 20)
FROM FoxTable
WHERE Row = @LoopCount
SET @LoopCount = @LoopCount + 1
END
【问题讨论】:
-
我会写一个函数,放一个';' (或您要使用的任何其他分隔符)在单词末尾达到 20 个字符,然后使用 string_split 将其拆分为多行
-
也许您可以尝试使用正则表达式 CLR,然后您将有更多选项来处理字符串
标签: sql sql-server