SQL Server’da Noktalama İşareti ile Ayrılmış Sütunları Ayırmak
Herkese merhaba,
Bu yazıda SQL Server’da noktalama işareti ile ayrılmış sütunların ayrılması hakkında bilgi vereceğim.
Konuyu anlamak adına aşağıdaki örneği inceleyin.
--Tablonun oluşturulması
CREATE TABLE KisiDetay
(
ID INT,
Ad VARCHAR(50),
Adres VARCHAR(50)
);
--Tabloya veri eklenmesi
INSERT INTO KisiDetay
VALUES
(100, 'Yavuz-Hasan-Bilge', 'Başakşehir|İstanbul|Türkiye'),
(200, 'Pelin-Büşra-Kübra', 'Ataköy|İstanbul|Türkiye'),
(300, 'Ahmet-Mehmet-Yasin', 'Yenibosna|İstanbul|Türkiye'),
(400, 'Yavuz-Emre-Abdullah', 'Yeşilköy|İstanbul|Türkiye'),
(500, 'Güneş-Yıldız-Emre', '10 Avcılar|İstanbul|İstanbul');
Burada KisiDetay diye bir tablo bulunmakta. Tabloyu oluşturun ve aşağıdaki sorguyu çalıştırın.
SELECT * FROM dbo.KisiDetay
Görüldüğü üzere kimisi tire ile kimisi de dikey çizgi ile ayrılmış durumda. Şimdi her birini ayrı bir sütunda gösterebilme kodunu inceleyelim.
SELECT [ID],
Ad,
Adres,
REPLACE(LEFT(Ad, CHARINDEX('-', Ad)), '-', ' ') AS İlk_Ad,
CASE
WHEN CHARINDEX('-', REVERSE(Ad)) + CHARINDEX('-', Ad) < LEN(Ad) THEN
SUBSTRING(Ad, CHARINDEX('-', (Ad)) + 1, LEN(Ad) - CHARINDEX('-', REVERSE(Ad)) - CHARINDEX('-', Ad))
ELSE
'NULL'
END AS Orta_Ad,
REPLACE(REVERSE(SUBSTRING(REVERSE(Ad), 1, CHARINDEX('-', REVERSE(Ad)))), '-', '') AS Soyad,
REPLACE(LEFT(Adres, CHARINDEX('|', Adres)), '|', ' ') AS Yaşadığı__İlçe,
CASE
WHEN CHARINDEX('|', REVERSE(Adres)) + CHARINDEX('|', Adres) < LEN(Adres) THEN
SUBSTRING(
Adres,
CHARINDEX('|', (Adres)) + 1,
LEN(Adres) - CHARINDEX('|', REVERSE(Adres)) - CHARINDEX('|', Adres)
)
ELSE
'Null'
END AS Yaşadığı_İl,
REPLACE(REVERSE(SUBSTRING(REVERSE(Adres), 1, CHARINDEX('|', REVERSE(Adres)))), '|', '') AS Yaşadığı_Ülke
FROM KisiDetay;
Sorguyu çalıştırdığınız zaman aşağıdaki gibi bir sonuç alacaksınız.
Görüldüğü üzere noktalama işareti ile ayrılmış alanlar sütunlara ayrılmış oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.