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.

  SQL Server’da Bir Kolonda Tutulan Ad Soyadı, İki Kolon Şeklinde Ayırmak

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

  SQL Server'da Ad ve Soyadı Ayırmak

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

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

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.

667 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!