Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Hilfe bei SQL Abfrage Firebird (https://www.delphipraxis.net/117444-hilfe-bei-sql-abfrage-firebird.html)

burn 18. Jul 2008 09:20

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:

TextTeil1 := '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));

...
Normalerweise sollte die Abfrage mir doch Ergebnisse wie
abcZxyzA, abcDxyzj, abc1xyz2 etc. liefern...

Steht jedenfalls da

Aber die Ergebnis-Menge bleibt leer. Die Frage: Hab ich irgendwas vergessen, nicht beachtet oder nicht verstanden ??

mfg Burn

mkinzler 18. Jul 2008 09:27

Re: Hilfe bei SQL Abfrage Firebird
 
Es fehlt der Joker
Delphi-Quellcode:
TextTeil1 := 'abc%';
Allerdings findet er dann alles was mit abc beginnet

burn 18. Jul 2008 09:32

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

mkinzler 18. Jul 2008 09:39

Re: Hilfe bei SQL Abfrage Firebird
 
Schreib dir eine UDF dafür oder FB ab 2.5.

burn 18. Jul 2008 09:50

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

mkinzler 18. Jul 2008 09:52

Re: Hilfe bei SQL Abfrage Firebird
 
Du must die Funktionen in die DB importieren. Fällt also aus.

nahpets 18. Jul 2008 10:08

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

Hansa 18. Jul 2008 10:26

Re: Hilfe bei SQL Abfrage Firebird
 
Geht so was nicht ?

SQL-Code:
SELECT * FROM TABLEX WHERE (NAME CONTAINING 'abc' AND BEZ CONTAINING 'z')
Ist die Stelle an der der Substring steht von Bedeutung ?

burn 18. Jul 2008 10:33

Re: Hilfe bei SQL Abfrage Firebird
 
@ nahpets

Natürlich gibt es das was ich suche ...
Wenn die Abfrage lautet :

Delphi-Quellcode:
'Select Feld1,Feld2,Feld3 where UPPER(FELD1 COLLATE DE_DE) = ' + QuotedStr(AnsiUpperCase('abc\123a'))
dann kommt ein Ergebnis ...

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

Hansa 18. Jul 2008 10:46

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:
like 'abc%'
. Das dürfte dann nicht zuviel zurückliefern. Was dann noch übrigbleibt, das würde ich eben dann im Programm abfangen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz