![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos-Komponenten
Hilfe bei SQL Abfrage Firebird
Hallo allerseits,
hätte da mal eine Frage zu einer SQL-Abfrage:
Delphi-Quellcode:
Normalerweise sollte die Abfrage mir doch Ergebnisse wieTextTeil1 := 'abc'; TextTeil2 := 'xyz'; s := AnsiUpperCase(TextTeil1 + '_' + TexTeil2 + '_'); QSuche.SQL.Add('Select Feld1, Feld2, Feld3 from Tabelle where '); QSuche.SQL.Add('UPPER(FELD1 COLLATE DE_DE) like ' + QuotedStr(s)); ... abcZxyzA, abcDxyzj, abc1xyz2 etc. liefern... Steht jedenfalls ![]() Aber die Ergebnis-Menge bleibt leer. Die Frage: Hab ich irgendwas vergessen, nicht beachtet oder nicht verstanden ?? mfg Burn |
Re: Hilfe bei SQL Abfrage Firebird
Es fehlt der Joker
Delphi-Quellcode:
Allerdings findet er dann alles was mit abc beginnet
TextTeil1 := 'abc%';
|
Re: Hilfe bei SQL Abfrage Firebird
@ mkinzler
Richtig ... genau das wollte ich ja vermeiden ... er soll eben nur die Datensätze finden die folgendermassen aufgebaut ist TextTeil1 ... dann etweder '/' oder '\' ... dann TextTeil2 ... dann ein beliebiger Buchstabe Bsp. a Also abc\xyza oder abc/xyzB oder auch abc\xyzP Vielleicht kann man die Abfrage auch anders gestalten ??? mfg Burn |
Re: Hilfe bei SQL Abfrage Firebird
Schreib dir eine UDF dafür oder FB ab 2.5.
|
Re: Hilfe bei SQL Abfrage Firebird
UDF fällt aus ... darf die DB nicht ändern ...
Oder kann man das auch ausserhalb der DB festlegen ??? Umstellung auf FB 2.5 wollen die Admins erst mal nicht machen ... mfg Burn |
Re: Hilfe bei SQL Abfrage Firebird
Du must die Funktionen in die DB importieren. Fällt also aus.
|
Re: Hilfe bei SQL Abfrage Firebird
Hallo,
da fällt mit momentan nur eine blöde Frage ein: Gibt es das, was Du suchst tatsächlich in der Datenbank? Ist mit auch mal passiert, bin an der Abfrage verzweifelt, bis ich dann feststellte, dass das, was ich bitte dringend raussuchen sollte, garnicht vorhanden war. Syntaktisch erscheint mir Deine Abfrage korrekt für die gestellte Aufgabe. Je nach Datenbank wir bei Like nicht zwischen Groß- und Kleinschreibung unterschieden, versuch's mal ohne Upper. Stephan |
Re: Hilfe bei SQL Abfrage Firebird
Geht so was nicht ?
SQL-Code:
Ist die Stelle an der der Substring steht von Bedeutung ?
SELECT * FROM TABLEX WHERE (NAME CONTAINING 'abc' AND BEZ CONTAINING 'z')
|
Re: Hilfe bei SQL Abfrage Firebird
@ nahpets
Natürlich gibt es das was ich suche ... Wenn die Abfrage lautet :
Delphi-Quellcode:
dann kommt ein Ergebnis ...
'Select Feld1,Feld2,Feld3 where UPPER(FELD1 COLLATE DE_DE) = ' + QuotedStr(AnsiUpperCase('abc\123a'))
Nur brauch ich das wie oben beschrieben ... Und ohne Upper geht nicht, da für das Feld welches abgefragt wird, zu viele Schreibweisen vorhanden sind. @ Hansa siehe #3 mfg burn |
Re: Hilfe bei SQL Abfrage Firebird
Bin mir ziemlich sicher, dass es einen SQL-Trick gibt, der mir gerade nicht einfällt. Aber im Zweifelsfall würde ich kurzen Prozess machen. :mrgreen: Lese notfalls die komplette Datenmenge mit möglichst großer Einschränkung. Also mit so was :
SQL-Code:
. Das dürfte dann nicht zuviel zurückliefern. Was dann noch übrigbleibt, das würde ich eben dann im Programm abfangen.
like 'abc%'
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 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