Regular expression'lar string ifadeler içerisinde aramak oluşturulan şablonlardır. Bu şekilde kompleks şablonlar oluşturulabilinir.
Örnek:
select * from apps.fnd_user where regexp_like(user_name,'B');
İçinde B harfi bulunan kullanıcıları görmek için regexp_like fonksiyonunda user_name sütununda B harfini aratabiliriz.
select * from apps.fnd_user where regexp_like(user_name,'B(E|C)');
İçerisinde B harfi olup da bu B harfini E veya C ile takip eden kullanıcıları görmek için 'B(E|C)' ifadesini kullanırız. Böylece ismi içerisinde BE veya BC olan kullanıcıları görebiliriz.
Veritabanındaki Regexp SQL Fonksiyonları:
Regexp_like: Bir tablonun kolonunda bir karakter dizisi aramak için where ifadesinden sonra kullanılır. Yukarıdaki örnekteki gibi regexp içerisinde şartlar sıralandıktan sonra kullanılır.
Syntax:http://docs.oracle.com/cd/B12037_01/server.101/b10759/conditions018.htm#SQLRF00501
Regexp_replace: Regexp_like gibi çalışan ama karşılaştığı her ifadeyi fonksiyon içerisinde belirtilen başka bir ifadeyle değiştirir.
Syntax:http://docs.oracle.com/cd/B12037_01/server.101/b10759/functions115.htm#SQLRF06302
Regexp_instr: Aranacak karakter şablonunun nereden itibaren aranmaya başlanacağını gösterir.
Syntax:http://docs.oracle.com/cd/B12037_01/server.101/b10759/functions114.htm#SQLRF06300
Regexp_substr: Substr fonksiyonuyla karşılaşılan kelime dizilerini sütunların içindeki verilerden çıkarabiliriz.
Syntax:http://docs.oracle.com/cd/B12037_01/server.101/b10759/functions116.htm#SQLRF06303
Regular Expression Oluşturan Karakter Şablonları:
Syntax | Operatör İsmi | Tanımı: | |||||||
. | Nokta | Herhangi bir karakter | |||||||
+ | Artı | öncesinde gelen ifadeden bir veya birden fazla karşılaşılması | |||||||
? | Soru işareti | Sıfır ya da bir kere öncesinde gelen ifadeyle karşılaşılması | |||||||
* | Yıldız | Sıfır ya da birden fazla öncesindeki ifadeyle karşılaşılması | |||||||
{m} | Aralık | öncesinde gelen ifadeden m tane karşılaşılması durumu | |||||||
{m,} | Aralık | öncesinde gelen ifadeden en az m tanesi ile karşılaşılması durumu | |||||||
{m,n} | Aralık | öncesinde gelen ifadeden en az m en fazla n tanesi ile karşılaşılması durumu | |||||||
[...] | Köşeli parantez | Parantezler içerisindeki kısımları eşler. | |||||||
[^...] | Köşeli parantez | Parantezler içerisindekilerin dışındakileri eşler |
Örnekler:
[a.z]: içinde a'dan z'ye kadar olaran bütün karakterler eşlenir.
Regular Expression'lar Oluşturmak: Dizilerimizi oluşturmak için ihtiyaçlarımıza göre ifadelerimizi oluştururuz. Örneğin arayacağımız sütunda "abc" dizilerini bulmak istiyorsak "abc" şeklinde arama yapabiliriz. Nokta Karakteri: Nokta karakteri arama dizisi içerisindeki herhangi bir karakteri ifade eder. Yani "a.c" ile ifade edilen bir dizi ile "aac","abc","acc" vb bütün diziler aranır. Kısaca a ile başlayıp c ile biten bütün diziler aranır. + Karakteri: + ile öncesinde gelen ifadeden bir veya birden fazla defa karşılaşılması durumunda o değeri geri döndürür. Örnek olarak "a+" şeklinde arama yaparsak içinde "a","aa","aaa",... gibi bütün örnekleri eşler. ? Karakteri: ? ile bir karakterin hiç olmadığı ya da bir kere karşılaşıldığı durumları ararız. Örneğin "ab?c" şeklinde arama yaptığımız aranacak olanlar kelime dizileri "ac" veya "abc"'dir. * Karakteri: * bize öncesinde gelen karakterin 0 ya da daha fazla karşılaşılma durumunu gösterir. Referanslar: http://psoug.org/reference/regexp.html http://docs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm http://turkceoracle.com/2011/03/oracle%E2%80%99da-duzenli-ifadeler-regular-expressions.html |
Hiç yorum yok:
Yorum Gönder