SORU
30 Mart 2009, PAZARTESİ


Fonksiyon eşdeğer T-SQL Split?

Split için arıyorum '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15...' (virgülle ayrılmış) tablo veya tablo değişkeni.

Herkes bir satır her biri döndüren bir işlevi var mı?

CEVAP
30 Mart 2009, PAZARTESİ


Burada eski moda çözüm biraz:

/*
    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'de aynı sonuçlar elde ediliyor .NET kodu. Belki daha hızlı olur ama kesinlikle bu yaklaşım yönetmek daha kolay.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Google Chrome

    Google Chrom

    1 EYLÜL 2008
  • MrOctopi

    MrOctopi

    6 Aralık 2010
  • TeachMeComputer

    TeachMeCompu

    31 EKİM 2009