Frage zu Interbase
-
Halli Hallo
Ich habe eine kurze SQL Frage, ich schreibe gerade eine DB Anwendung mit dem BCB5 und hab den Interbase server. Nun gebe ich über ein Edit ein Wort ein, das in der DB Gesucht werden soll, es sollen auch ähnliche Suchen möglich sein, hier ein Bsp. ich gebe EKG ein nun kann in der DB stehen "Belastungsekg", "EKG" oder auch "Ekg", gibt es in der SQL abfrage etwas wie ich die drei Fälle zusammenpacken kann so was wie toupper tolower oder so was die Strings in der DB so anordnet dass ich nicht mit "or" hantieren muss denn das würde die SAche ja langsam machen weil die ganzen Fälle geprüft werden müssen?
Puh das war nun ein langes Posting
aber dafür mach ich auch mal Glotzaugen
-
Wenn du keine ORs haben möchtest könnte als erster Ansatz "... LIKE %EKG%" funktionieren. Wirst halt alle Wörter bekommen in denen 'ekg' vorkommt.
-
Hi
wenn ich like mach also like %EKG% dann finde ich doch nur EKG, BELASTUNGSEKG etc.. aber nicht Ekg oder ? Like sucht doch dann auch "genau". Ich würde gerne wissen oder man der DB irgendwie mitgeben kann dass sie Intern die Daten alle nur als Groß verwaltet so dass ich bei einer Eingabe von EKG auch ekg bekomme ohne nach allen Schreibmöglichkeiten zu suchen sondern nur eine verwende aber dann alle bekomme
-
LIKE sucht wie auch das Wort selbst schon verratet "nach Wörtern wie". Das '%' ist dabei ein Platzhalter. Das heisst es sucht nach Wörtern die EKG enthalten.
LIKE EKG% --> Wörter sollen mit EKG beginnen
LIKE %EKG --> Wörter sollen auf EKG enden
LIKE %EKG% -> Wörter die irgendwie EKG enthalten (auch wenn davor oder danach nichts mehr steht)
-
genau das ist es also wäre ich so nass wie vorher ich muesste dann schreiben like %ekg% or like %EKG%.... usw dann hätte ich wieder die ors drin die die sache verlangsamen, wenn dann könnte ich vielleicht alle Texte eh schon Gross in die DB schreibe und wenn ein Benutzer was eingibt dann z.b. ekg dann muss ich das Filtern und daraus EKG machen ohne dass der was merkt
-
Anstatt dich hier zu beschweren. Probiers doch einfach aus? Like arbeitet nicht case sensitive (zumindest bei Oracle nicht) ....
-
Ansonsten gibt es in interbase auch noch die Funktion Upper
"Select * from TABELLE where UPPER(FELD) like 'EKG'"
Ich habe das allerdings noch nie mit Platzhaltern direkt in der Select-Anweisung probiert.
Ich meine aber, dass ich es in einem Programm mal über eine Variable die vom Benutzer eingegeben werden konnte gemacht habe. Sah dann so ähnlich aus:
AnsiString Such = "%ekg"; // string muß am Ende stehen AnsiString Such = "%ekg%"; // string muß am Anfang stehen AnsiString Such = "%ekg%"; // string steht mittendrin "Select * from TABELLE where UPPER(FELD) like '"+ Such +"'"