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ş:
Clojure Core veya Contrib Zip fonksiyo...
Saf fonksiyon faydaları...
Fonksiyon bilinmez scalaz sözdizimi...
PHP JavaScript eşdeğer'In in_arra...
Yarma boru sembol kullanarak split ile...