Kelime arama

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Kelime arama

Mesaj gönderen fatihtolgaata »

s.a.

Access veritabanı kullanıyorum. SQL' de sadece kelime aranabiliyor mu? Ben bir şeyler yaptım. Çalışıyor ama bir iki saniye kadar gecikme oluyor. Aranan kelime sayısı arttığında bu miktar 4-5 saniyeye kadar çıkıyor. Bu da çok yavaş. LIKE "% kelime %" gibi bir şey işe yaramaz. Çünkü her kelimeden önce boşluk olmadığı gibi her kelimeden sonra da boşluk olmaz. Mesela "Asar-ı Bediyye" şeklinde olan bir alanın Asar kelimesinin başında boşluk olmadığı gibi sonunda da tire var. Ben de bütün ihtimalleri değerlendirerek REPLACE ile hallettim. Başına ve sonuna da boşluk ekleyince sorun kalmadı. İnternette arama yaptım. RegEx destekleyen db'lerde regular expression ile yapıyorlar. Ama access regex desteklemiyor. Benim yaptığım şey şöyle bişi:

Kod: Tümünü seç

SELECT * FROM SomeTable WHERE
" " + REPLACE(REPLACE(REPLACE(SomeField, "-", " "), "/", " "), "?", " ") + " ";
Bunun gibi iç içe 18-19 Replace var :D Yani karadüzen. Bir fikri olan var mı. Bu arada sql server felan olsaydı TRANSLATE ile tek komutta halledilebiliyor. Ve çok daha hızlı oluyor.

vesselam
hbilal
Üye
Mesajlar: 18
Kayıt: 04 Ara 2010 12:13

Re: Kelime arama

Mesaj gönderen hbilal »

Kod: Tümünü seç

procedure Tfrm_sorgu.Button1Click(Sender: TObject);
var
mask:String;
begin
  if edit1.Text > '' then
  begin
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('SELECT * FROM urunler');
    mask := '''%'+StringReplace(edit1.text,' ','%',[rfReplaceAll, rfIgnoreCase])+'%''';
    Query1.SQL.ADD('Where URUNADI like' +mask+'');
    Query1.Open;
end;
end;
Cevapla