• 30-06-2010, 20:19:53
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba;

    Oracle'da bir tablodaki bir sütundaki (varchar field) harf içeren bütün satırları nasıl getirebilirim? Bir bilen bulunur mu?

    select * from tablo_adı where sütun_adı not like '%[0-9]%'


    select * from tablo_adı where sütun_adı like '%[a-z]%'

    İstediğim sonucu vermiyor. İngilizce sitelerde PATINDEX vs den söz ediliyor ama bunlar oracle için değil. SQL Server için...

    Oracle için bu sorunun cevabını bilen var mı?
  • 30-06-2010, 21:25:31
    #2
    Sonunda buldum. Pek bir amele işi oldu ama işimi de gördü. İhtiyaç duyan olursa diye paylaşıyorum. Benim sadece numaraları ayıklamam yettiği için sadece numeric değerleri koydum. Böyle basit bir şey için PL/SQL bloğu da yazılabilir ama kim uğraşacak

    select * from tablo_adı where
    sütun_adı not like '%0%'
    and sütun_adı not like '%1%'
    and sütun_adı not like '%3%'
    and sütun_adı not like '%2%'
    and sütun_adı not like '%4%'
    and sütun_adı not like '%5%'
    and sütun_adı not like '%6%'
    and sütun_adı not like '%7%'
    and sütun_adı not like '%8%'
    and sütun_adı not like '%9%'
  • 30-06-2010, 23:04:59
    #3
    tamda bu istediğin için şöyle bi function yazmıştım zamanında.

    Alıntı
    CREATE OR REPLACE FUNCTION Is_Number (
    i_ IN VARCHAR2 ) RETURN VARCHAR2
    IS
    Result_ boolean;
    x_ NUMBER;
    FUNCTION Sayi (
    i_ IN VARCHAR2 ) RETURN NUMBER
    IS
    sayi_ NUMBER;
    BEGIN
    BEGIN
    sayi_ := i_;
    EXCEPTION WHEN OTHERS THEN
    BEGIN
    sayi_ := to_number(i_);
    EXCEPTION WHEN OTHERS THEN
    BEGIN
    sayi_ := REPLACE(i_,'.',',');
    EXCEPTION WHEN OTHERS THEN
    sayi_ := REPLACE(i_,',','.');
    END;
    END;
    END ;
    RETURN sayi_;
    END Sayi;
    BEGIN
    x_ := Sayi(i_);
    RETURN 'TRUE';
    EXCEPTION WHEN OTHERS THEN RETURN 'FALSE';
    END Is_Number;
    bu function u derledikten sonra
    sorgun şu şekilde oluyor
    Alıntı
    select * from tablo_adı
    where is_number(sütun_adı) = 'FALSE'
    not : vermiş olduğum function senin sql sorgundan %7000 daha hızlı çalışıyor.