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('
dbo şemasına altında oluşturulan bu fonksiyonu kullanalım.
[sql]DECLARE @text NVARCHAR(max)
SELECT @text = 'C#, VB.NET, SQL Server, AJAX'
SELECT * FROM dbo.Split(@text, ',')
C#
VB.NET
SQL Server
AJAX
12 Angry Men, Sidney Lumet tarafından yönetilmiş ve görünürde Henry Fonda’nın başrolde oynadığı 1957 yapımı bir kült filmdir. “18 yaşındaki bir Latin genç, babasının ölümünden sorumlu tutularak mahkemeye çıkartılır. Duruşmayı takip eden 12 jüri üyesi tanıkların da ifadelerine başvurduktan sonra, gencin suçlu olduğuna kanaat getirirler. Karar açıklanacağı zaman 11 üye, onun suçlu olduğunu ve idam edilmesini savunurken Bay Davis, karara karşı çıkar ve herkesi kararlarını yeniden değerlendirmeye davet eder. Çünkü jüri, bu kararı kesin delillere göre değil, kişisel düşüncelerine ve bazı dış etkenlere göre vermiştir.”