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.

[related-post id=”2681″]

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

[related-post id=”6274″]

İ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.

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.

SQL Server'da Ad Soyad Ayıran Prosedür

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)=' 

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.

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.

SQL Server'da Ad Soyad Ayıran Prosedür

Görüldüğü üzere Ad, Soyad alanları ayrılmış oldu.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

SQL Server Eğitimleri Kanalına Abone Olun

Şunlar makaleler de hoşunuza gidebilir