Başlangıç > Database, Forms, Oracle, PL/SQL, Reports > pl/sql de sabit metin içindeki belirli bir karakter sayısını bulma

pl/sql de sabit metin içindeki belirli bir karakter sayısını bulma


Merhaba,

Database üzerinde kayıt olan bir metin içinde ya da herhangi bir sabit metin içerisinde bir kelimenin ya da karakterin kaç kere tekrar ettiği bilgisini bulmak için aşağıdaki pl/sql fonksiyonunu yazdım. Bu fonksiyon ile ister db üzerinde kayıtlı bir alandaki metinden ister sabit olarak fonksiyona gönderilen metin içerisinden istenilen karakter sayısı bulunabilinir. Fonksiyonun kodları ve kullanımı aşağıdadır.

CREATE OR REPLACE FUNCTION karakter_sayisi(metin VARCHAR2, aranan_karakter VARCHAR2) RETURN NUMBER IS
  karakter_adet    NUMBER;
  sonraki_karakter NUMBER;
  sabit_metin      VARCHAR2(4000);
  aranan_metin     VARCHAR2(4000);
BEGIN
  karakter_adet    := 0;
  sonraki_karakter := 1;
  sabit_metin      := lower(metin);
  aranan_metin     := lower(aranan_karakter);

  FOR i IN 1 .. length(sabit_metin) LOOP
    IF (length(aranan_metin) <= (length(sabit_metin) - sonraki_karakter + 1)) AND
       (substr(sabit_metin, sonraki_karakter, length(aranan_metin)) = aranan_metin) THEN
      karakter_adet := karakter_adet + 1;
    END IF;
    sonraki_karakter := sonraki_karakter + 1;
  END LOOP;

  RETURN karakter_adet;
END karakter_sayisi;

Örnek bir kaç kullanım aşağıdadır.

SELECT karakter_sayisi('sabit bir metin', 'i') "Karakter Sayısı" FROM dual;

SELECT karakter_sayisi('deneme olarak yazılan deneme bir sabit metin', 'deneme') "Karakter Sayısı" FROM dual;

Örneklerden de anlaşılacağı gibi sabit bir metin içerisinde ister sadece bir karakter isterse bir kelime araması yapılabilinir.

Kolay gelsin.

Reklamlar
  1. 26 Mayıs 2011, 17:17

    Teşekkürler gayet açıklayıcı olmuş

    Beğen

  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: