Mar 21
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




Recent Comments