Veritabanı Group_Concat,Concat,Replace,Trim Fonksiyonları
Uygulamalarımızda kimi zaman veritabanından gelen veriler üzerinde değişiklik yapma ihtiyacı duyarız. Bu değişiklikler uygulama tarafında yapılabilir. Ancak performans arttırmak gibi sebepler nedeniyle bunları veritabanı tarafında yapmak isteyebiliriz. Bu yüzden veritabanından veri çekerken, gelen veriler üzerinde değişiklik yapmanızı sağlayacak ve işlerinizi kolaylaştıracak 4 fonksiyondan bahsetmek istiyorum.
GROUP_CONCAT :
Group_Concat fonksiyonu Oracle ve Mysql’de bulunmaktadır. Veritabanı sorgusundan dönen satırları istediğimiz ayıraç ile ayırıp tek satır halinde göstermemizi sağlar.
Örneğin
my_id | my_field | my_type |
1 | alan1 | 1 |
2 | alan2 | 1 |
3 | alan3 | 2 |
4 | alan4 | 1 |
5 | alan5 | 2 |
6 | alan2 | 1 |
SELECT my_field FROM my_table where my_type=1
Sorgusu
my_field |
alan1 |
alan2 |
alan4 |
alan6 |
sonucunu döndürür.Ancak
SELECT GROUP_CONCAT(my_field SEPERATOR ‘,’) FROM my_table where my_type=1
sorgusu
alan1,alan2,alan4,alan6
sonucunu döndürür.
Bu işlemi MSSQL Server ile biraz uzun bir sekilde yapabiliriz.
Öncelikle veritabanimizda bir fonksiyon yazacagiz. Bu fonksiyon belirli bir type’a ait alanlari getirecek. Daha sonra da bu fonksiyonu Select deyiminde kullanacagiz.
create function typeIleGetir(@type int)
returns varchar(300)
as
begin
declare @sonuc varchar(300)
select @sonuc = coalesce(@sonuc + ‘,’ + convert(varchar,my_field), convert(varchar,my_field))
from my_table
where my_type = @type
return @sonuc
end
Bu fonksiyonu ise aşağıdaki Select deyimimizde kullanacağız.
select typeIleGetir(my_type) as my_field
from (
select my_type
from my_table
where my_type=1
)
CONCAT:
Bu fonksiyon sorgumuz sonucunda elde ettiğimiz verileri birleştirmeye yarar. Örneğin veritabanında ad ve soyadı iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip döndürebiliriz.
MySQL ve Oracle’da kullanımı :
SELECT CONCAT(adi,soyadi) FROM tblkullanici WHERE kid = 1;
Bu fonksiyonu Oracle’da sadece 2 parametre ile kullanabilirsiniz. Oracle’da daha fazla veriyi birleştirmek için || operatörü kullanılır.
SELECT adi || ‘-’ || soyadi FROM tblkullanici WHERE kid = 1;
Sql Server’da bu fonksiyon yerine + operatörü kullanılır.
SELECT adi + ‘-’ + soyadi FROM tblkullanici WHERE kid = 1;
TRIM:
Bu fonksiyon Mysql’de 3 şekilde bulunur : Trim(),Ltrim(),Rtrim(). Oracle ve MsSql Server’da ise Trim() fonksiyonu yoktur.
Yapısı şu şekildedir:
TRIM([{BOTH | LEADING | TRAILING} [atılacakstr] FROM] aranacakstr)
Örneğin
Select TRIM(LEADING ‘ ’ From soyadi ) from tblkullanicibilgi where kid=1
Sorgusu tablodan çekilen soyadi alanının başındaki boşluğu atacaktır.
REPLACE:
Bu fonksiyon veritabanından çektiğimiz very içinde bir string arar ve bunu bizim belirttiğimiz string ile değiştirir.
Bu fonksiyon MsSql Server, Oracle ve MySQL için aynıdır.
adi | soyadi |
ali | caner |
mehmet | sami |
murat | güneşer |
Yukarıdaki tblkullanici tablosunda
Select REPLACE(soyadi,’er’,’soy’) from tblkullanici
Sorgusunu çalıştırdığımızda bize aşağıdaki gibi bir sonuç döndürecektir.
soyadi |
cansoy |
sami |
güneşsoy |
Leave a Reply