T-SQL UPDATE Islemi ile Ilgili Sik Kullanilan Örnekler

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

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir