我有一个表格,其中包含100个字符或更少的字段“comments”。我想将此字段分成每个20个字符的批处理,然后在每批20个字符后添加分隔符。字段中的文本没有可以使用的任何分隔符。我可以使用子字符串为前20个字母执行此操作,但不能为其余字母执行此操作。有人可以建议一个SQL查询来执行此操作吗?
非常感谢:)
答案 0 :(得分:0)
试试这个。
select
concat
(
concat(substring(comments, 1, 20), '|'),
concat(substring(comments, 21, 20), '|'),
concat(substring(comments, 41, 20), '|'),
concat(substring(comments, 61, 20), '|'),
concat(substring(comments, 81, 20), '|')
)
from
t
答案 1 :(得分:0)
尝试使用用户定义的功能
CREATE FUNCTION dbo.SplitBy(
@String varchar(max),
@Delimiter char(1)
)
returns varchar(max)
as
begin
declare @fldSize int
set @fldSize = 20
declare @TotalCnt int
set @TotalCnt = len(@String)
declare @c int
set @c = 1
declare @TS varchar(max)
set @TS = ''
if @TotalCnt > @fldSize begin
set @TS = substring(@String, @c, @fldSize)
set @c = @c + @fldSize
while @c < @TotalCnt begin
set @TS = @TS + @Delimiter + substring(@String, @c, @fldSize)
set @c = @c + @fldSize
end
if @c = @TotalCnt begin
set @TS = @TS + @Delimiter + substring(@String, @c, @TotalCnt-(@c-1))
end
return @TS
end
return @String
end
USAGE
update [YourTable] set fldToDelimit = dbo.SplitBy(fldToDelimit, '|')
希望能帮助你!