Herkese merhaba,
Bu yazıda sizlere SQL Server’da ad soyad ayıran prosedürden bahsedeceğim.
Aslında bu tür yazıları daha önce yazmıştım.

Sonrasında bu makaleyi yazmıştım.

İlk olarak yukarıdaki makaleleri okumanızı ve SQL Server’da denemenizi öneririm.
Son yazdığım makalenin (SQL Server’da Ad ve Soyadı Ayırmak) prosedür haline getirilmiş halini paylaşıyor olacağım.
Bu prosedür şu şekilde çalışıyor.
Bir tablonuz var bu herhangi bir tablo olabilir. Bu tablonun adını ve ilgili kolonların adlarını girerek gerekli güncelleme işlemini yaptırabilirsiniz.
Şimdi bir örnek yaparak ne demek istediğimi açıklayayım.
İlk olarak aşağıdaki tabloyu oluşturup ilgili verileri tabloya insert edelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
CREATE TABLE TABLEADSOYAD ( ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, AD NVARCHAR(50), SOYAD NVARCHAR(50), YAS SMALLINT ) --Tabloya Veri Eklenmesi TRUNCATE TABLE TABLEADSOYAD INSERT INTO dbo.TABLEADSOYAD ( AD, SOYAD, YAS ) VALUES ( N'Mehmet Doğan Yılmaz', -- AD - nvarchar(50) N'', -- SOYAD - nvarchar(50) 40 ), ( N'Yavuz Selim Kart', -- AD - nvarchar(50) N'', -- SOYAD - nvarchar(50), 70 ) SELECT * FROM TABLEADSOYAD |
Görüldüğü üzere Ad Soyad kısımları tek bir alanda (Ad kısmında) kaydedilmiş. Bu şekilde hata yapılmış olan bir tablonuz olabilir.
Burada yazmış olduğum prosedür Ad kısmında olan soyadın ilgili Soyad kolonuna basılmasını sağlayan bir prosedürdür ve bu işlemi tablo bağımsız şekilde yapar. Yani prosedürü bu şekilde ayarladım.
İlgili prosedür aşağıdadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
CREATE PROC AdSoyadAyirma @TabloAd NVARCHAR(50), @Ad NVARCHAR(50), @Soyad NVARCHAR(50) AS BEGIN DECLARE @SQLCumlecigi NVARCHAR(1000)=' UPDATE dbo.' +@TabloAd+ ' SET '+ @Ad +'= CASE WHEN CHARINDEX('' '', '+ @Ad+ ') > 0 THEN SUBSTRING('+@Ad+' , 1, LEN('+ @Ad +') - CHARINDEX('' '', REVERSE(' + @Ad + '))) ELSE Ad END, '+ @Soyad +' = CASE WHEN CHARINDEX('' '', '+ @Ad +') > 0 THEN REVERSE(SUBSTRING(REVERSE('+ @Ad +'), 1, CHARINDEX('' '', REVERSE('+ @Ad + ')) - 1)) ELSE Soyad END;' EXEC sp_executesql @SQLCumlecigi END |
Şimdi prosedürü kullanalım.
1 |
EXEC dbo.AdSoyadAyirma 'TABLEADSOYAD','AD','SOYAD' |
Prosedürde
İlk Parametre : Tablo adı
İkinci Parametre : Ad ve soyadın beraber tutulduğu alan
Üçüncü Parametre : Soyad alanı
Bu kısımları kendi tablonuza göre vermelisiniz.
Uyarı : Lütfen bu işlemi kendi tablonuza uygulamadan önce işin mantığını oturtmak adına buradaki gibi örnek bir tablo yapın ve sonrasında kendi tablonuzun yedeğini alarak bu işlemi gerçekleştirin. Aksi durumda veri kaybı yaşayabilirsiniz.
İşlemi yaptıktan sonra aşağıdaki sonucu göreceksiniz.
Görüldüğü üzere Ad, Soyad alanları ayrılmış oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.
