SQL Server’da Ad Soyad Ayıran Prosedür
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.
--Tablonun oluşturulması
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);
--Verilerin listelenmesi
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.
CREATE PROC AdSoyadAyirma
@TabloAd NVARCHAR(50),
@Ad NVARCHAR(50),
@Soyad NVARCHAR(50)
AS
BEGIN
DECLARE @SQLCumlecigi NVARCHAR(1000)
= N'
UPDATE dbo.' + @TabloAd + N'
SET ' + @Ad + N'= CASE
WHEN CHARINDEX('' '', ' + @Ad + N') > 0 THEN
SUBSTRING(' + @Ad + N' , 1, LEN(' + @Ad + N') - CHARINDEX('' '', REVERSE(' + @Ad
+ N')))
ELSE
Ad
END,
' + @Soyad + N' = CASE
WHEN CHARINDEX('' '', ' + @Ad + N') > 0 THEN
REVERSE(SUBSTRING(REVERSE(' + @Ad + N'), 1, CHARINDEX('' '', REVERSE(' + @Ad
+ N')) - 1))
ELSE
Soyad
END;';
EXEC sp_executesql @SQLCumlecigi;
END;
--Prosedürü kullanalım.
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.