T-SQL UPDATE Islemi ile Ilgili Sik Kullanilan Örnekler
Bu makalemizde UPDATE islemi sirasinda uygulayabilecegimiz basit örnekler anlatacagiz.
Ilk olarak replace fonksiyonu ile bir kolon içindeki varchar degeri bir baskasi ile degistirip Update islemi ile kaydi güncelleyecegiz.
Ilk olarak replace fonksiyonunu nasil çalistigina bakalim.
t-SQL Replace Fonksiyonunun Kullanimi
select replace('Orjinal Metin','Patern 1','Petern 2')
Yukaridaki sorguda Orjinal Metin içerisinde Patern 1 aranir ve bulundugu zaman Patern 2 ile degistirilir, eger bulunamazsa orjinal metin oldugu gibi döndürülür. Bir Örnek verecek olursak
select replace('Yazilim Mutfagi Web Sitesi','Web Sitesi','Harika')
Sonuç:
------------------- Yazilim Mutfagi Harika (1 row(s) affected).
Simdi replace fonksiyonunun UPDATE isleminde kullanimina bakalim. Örneklerimizde kullanacagimiz tabloyu ve verileri asagidaki script ile olusturabilirsiniz.
create table Urun ( UrunID int identity(1,1), KategoriAdi varchar(20), UrunAdi varchar(20), Ucret int ) insert into Urun values ('Cep Telefonu','nokia 808 PureView',300) ,('Cep Telefonu','Samsung Galaxy S2',550) ,('Notebook','HP EliteBook 8460p',1500) ,('PC','Dell',900),('PC','Acer',1000) ,('Mouse','A4 Tech',10)
Örnek tablomuzda kayitlara bakacak olursak;
select * from Urun
UrunID KategoriAdi UrunAdi Ucret ----------- -------------------- -------------------- ----------- 1 Cep Telefonu nokia 808 PureView 300 2 Cep Telefonu Samsung Galaxy S2 550 3 Notebook HP EliteBook 8460p 1500 4 PC Dell 900 5 PC Acer 1000 6 Mouse A4 Tech 10 (6 row(s) affected)
Simdi ise KateogoriAdi alaninda ‘Cep’ geçen kisimlari Mobile ile degistirelim. Daha sonra yine select islemi ile tablonun kayitlarinin yeni haline bakalim.
UPDATE Urun set KategoriAdi = replace(KategoriAdi,'Cep','Mobile') select * from Urun
Sorgu Sonucu
(6 row(s) affected) UrunID KategoriAdi UrunAdi Ucret ----------- -------------------- -------------------- ----------- 1 Mobile Telefonu nokia 808 PureView 300 2 Mobile Telefonu Samsung Galaxy S2 550 3 Notebook HP EliteBook 8460p 1500 4 PC Dell 900 5 PC Acer 1000 6 Mouse A4 Tech 10 (6 row(s) affected)
Cep kelimesini mobile kelimesi ile degistirince kategori adi Mobile Telefonu oldu, Bunu düzeltmek için ‘Telefonu’ kelimesini ‘Phone’ ile degistirelim. Fakat bunu yaparken bir önceki örnegimizde oldugu gibi tüm kayitlari taramiyalim, where kisminda içinde Telefonu gecen satirlari bulalim ve SQL için islem sayisini azaltalim. milyonlarca kayit olan bir tabloda bu islemi yaparken bunun çok faydasi olacaktir.
UPDATE urun set KategoriAdi = replace(KategoriAdi,'Telefonu','Phone') where KategoriAdi like '%Telefonu%' select * from Urun
Sonuç
(2 row(s) affected) UrunID KategoriAdi UrunAdi Ucret ----------- -------------------- -------------------- ----------- 1 Mobile Phone nokia 808 PureView 300 2 Mobile Phone Samsung Galaxy S2 550 3 Notebook HP EliteBook 8460p 1500 4 PC Dell 900 5 PC Acer 1000 6 Mouse A4 Tech 10 (6 row(s) affected).
Yukaridaki iki örnege ait sonuç kisimlarini incelegimiz zaman sonuc metninin ilk satirindaki farkliligi görürsünüz. 1. Örnekte ‘6 rows affected’ derken 2. örnekte ‘2 rows affected’ diyor. Çünkü 2. örnegimizde where cümlesinde kayitlari filtreleyerek daha az kayit üzerinde islem yaptik.
Replace ile update örnegimizi yaptiktan sonra simdi ise yeni bir örnek tablo ile iki kolondaki bilgileri bir araya getirerek tek bir kolona yazalim. Bunun için asagidaki script ile örnek tablomuzu olusturup bir sonraki update sorgusunu çalistiralim.
create table Kisi ( ID int identity(1,1), Ad varchar(10), Soyad varchar(10), AdSoyad varchar(20) ) insert into Kisi values ('Sabri','KUNT',''), ('Ali','RÜZGAR',''), ('Fatih','DEMIR',''), ('Furkan','PALAZ','') select * from Kisi
Yukaridaki script sonucu tablo olusturuldu ve kayitlar içine atildi, sonra select sorgusu ile kayitlara baktik. Yukaridaki sorgu sonucu asagidaki kayitlar döndü. Dikkat ederseniz AdSoyad kolonu bos.
(4 row(s) affected) ID Ad Soyad AdSoyad ----------- ---------- ---------- -------------------- 1 Sabri KUNT 2 Ali RÜZGAR 3 Fatih DEMIR 4 Furkan PALAZ (4 row(s) affected)
Simdi ise UPDATE sorgusu ile Ad ve Soyad kolonlarinda bulunan verileri alip AdSoyad kolonuna birlesik sekilde yazalim.
UPDATE Kisi set AdSoyad = Ad+' '+Soyad select * from Kisi
Update sorgusu sonucunda çalisan select sorgusu asagidaki kayitlari döndürdü.
(4 row(s) affected) ID Ad Soyad AdSoyad ----------- ---------- ---------- -------------------- 1 Sabri KUNT Sabri KUNT 2 Ali RÜZGAR Ali RÜZGAR 3 Fatih DEMIR Fatih DEMIR 4 Furkan PALAZ Furkan PALAZ (4 row(s) affected).