![]() |
Datenbank: Access • Version: 2003 • Zugriff über: ADO
%? Alles vor und nach String abfragen?
Hallo
Das andere Thema hat sich erledigt. Ich habe selbst eine Lösung gebastelt. Nur weiß ich nicht wie ich sie umsetzen soll. Ich möchte gerne das vor diesem string: + QuotedStr(sText); und nach diesem String alles abgefragt wird. Ich glaube das geht mit diesen Prozentzeichen. Beispiel:
Delphi-Quellcode:
So ungefähr müsste das aussehen. Ich hoffe ihr könnt mir sagen wir man das richtig macht.
Close;
SQL.Text := 'SELECT * FROM abc WHERE wert LIKE %'+ QuotedStr(sText)%; Open; |
Re: %? Alles vor und nach String abfragen?
Delphi-Quellcode:
Allerdings ist das so ziemlich das unperformanteste, was man tun kann, da so kein Index der Welt mehr greifen kann (es wird immer ein Full Table Scan durchgeführt).
Close;
sText := QuotedStr('%' + sText + '%'); SQL.Text := 'SELECT * FROM abc WHERE wert LIKE '+ sText; Open; |
Re: %? Alles vor und nach String abfragen?
Ah perfekt funktioniert. Nun möchte ich aber das nach jedem Wort in dem String % kommt. Geht das?
|
Re: %? Alles vor und nach String abfragen?
Zitat:
|
Re: %? Alles vor und nach String abfragen?
Den anderen Themen nach zu urteilen hattest du noch nicht so oft mit Datenbanken zu tun (nehm ich mal an), du solltest dir vielleicht mal die Normalisierung ansehen
![]() @Roter Kasten: seh ich auch so: :gruebel: |
Re: %? Alles vor und nach String abfragen?
Ich hasse das, dass ich nicht gut erklären kann. Also folgendes Problem:
Dein Code:
Delphi-Quellcode:
Indem String steht jetzt wert1 wert2 wert3
Close;
sText := QuotedStr('%' + sText + '%'); SQL.Text := 'SELECT * FROM abc WHERE wert LIKE '+ sText; Open; Dann wird halt eine Datenbank abfrage gemacht. Wenn es aber in der Datenbank nicht in der Reihenfolge steht wie es abgefragt wird, wird es nicht angezeigt. In der Datenbank steht es so: wert3 wert1 wert2 So kann es nicht abgefragt werden. Wie kann ich das mit dem Code oben abfragen? Also so das es egal ist wie die Wörter in dem String positioniert sind. edit: Die Performance ist egal. Das wird keine Anwendung für 10000 Daten. |
Re: %? Alles vor und nach String abfragen?
Es widerstrebt mir, das überhaupt zu posten, aber wenn die Reihenfolge auch keine Rolle spielen darf/soll, können wir die Performance auch komplett in den Keller drücken. Das wäre dann eine Abfrage in der Art:
SQL-Code:
Somit hast Du nun je Wert einen Full Table Scan, schlimmer geht' s nimmer.
SELECT * FROM Tabelle
WHERE Feld LIKE '%wert1%' AND Feld LIKE '%wert2%' AND Feld LIKE '%wert3%' |
Re: %? Alles vor und nach String abfragen?
Das ist ja auch kein Problem. Aber ich möchte ja die Abfrage mit dem String machen.
Oder kann ich den String für die Abfrage auseinander nehmen? |
Re: %? Alles vor und nach String abfragen?
Zitat:
|
Re: %? Alles vor und nach String abfragen?
Was passiert mit den Checkcoxen die nicht angekreuzt sind? Und was mache ich wenn ich ungefähr hm ... 600 Checkboxen habe?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz