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

Your email address will not be published. Required fields are marked *