XML Formatını Kullanarak Metni Bölmek (String Split)

Query Analyzer Add comments

SQL Server üzerinde programlama yaparken metinleri ayrıştıran split fonksiyonunun T-SQL’de olmayışının eksikliÄŸini hep hissetmiÅŸizdir. Bir metni bölmenin birçok yöntemi olsa da hepsinin mantığı döngü kurup metin içerisinde virgül gibi bir ayıraçın konumu bularak her virgül arasındaki deÄŸeri listelemektir. SQLTeam’da denk geldiÄŸim aÅŸağıdaki yöntemin daha hızlı olduÄŸu ve pratik olduÄŸunu düşünüyorum.

IF OBJECT_ID('dbo.Split') IS NOT NULL
    DROP FUNCTION dbo.Split

GO
CREATE FUNCTION dbo.Split(@data NVARCHAR(MAX), @delimiter NVARCHAR(5))
RETURNS @t TABLE (data NVARCHAR(max))
AS
BEGIN

    DECLARE @textXML XML;
    SELECT    @textXML = CAST('' + REPLACE(@data, @delimiter, '') + '' AS XML);

    INSERT INTO @t(data)
    SELECT  T.split.value('.', 'nvarchar(max)') AS data
    FROM    @textXML.nodes('/D') T(split)

    RETURN
END
GO

dbo şemasına altında oluşturulan bu fonksiyonu kullanalım.

DECLARE @text NVARCHAR(max)
SELECT @text = 'C#, VB.NET, SQL Server, AJAX'

SELECT * FROM dbo.Split(@text, ',')

C#
VB.NET
SQL Server
AJAX

Leave a Reply


− 1 = 7

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS GiriÅŸ