小编典典

拆分函数是否等效于T-SQL?

sql

我想将“ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 …”(以逗号分隔)拆分为一个表或表变量。

有人有连续返回每个函数的函数吗?


阅读 212

收藏
2021-05-05

共1个答案

小编典典

这是一些老式的解决方案:

/*
    Splits string into parts delimitered with specified character.
*/
CREATE FUNCTION [dbo].[SDF_SplitString]
(
    @sString nvarchar(2048),
    @cDelimiter nchar(1)
)
RETURNS @tParts TABLE ( part nvarchar(2048) )
AS
BEGIN
    if @sString is null return
    declare @iStart int,
            @iPos int
    if substring( @sString, 1, 1 ) = @cDelimiter 
    begin
        set @iStart = 2
        insert into @tParts
        values( null )
    end
    else 
        set @iStart = 1
    while 1=1
    begin
        set @iPos = charindex( @cDelimiter, @sString, @iStart )
        if @iPos = 0
            set @iPos = len( @sString )+1
        if @iPos - @iStart > 0          
            insert into @tParts
            values  ( substring( @sString, @iStart, @iPos-@iStart ))
        else
            insert into @tParts
            values( null )
        set @iStart = @iPos+1
        if @iStart > len( @sString ) 
            break
    end
    RETURN

END

在SQL Server 2008中,您可以使用.NET代码实现相同的目的。也许它会更快地工作,但是绝对可以更轻松地管理这种方法。

2021-05-05