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

  • girleffect

    girleffect

    20 Mayıs 2008
  • Malwarebytes

    Malwarebytes

    22 Temmuz 2007
  • Vicious Computers

    Vicious Comp

    14 EKİM 2006