![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDAC
TFDQuery Param "like"
Hallo Zusammen,
ich habe folgende SQL Abfrage:
Code:
den Suchwert soll über die
Select
* From Tabelle where Feld like '%test%'
Code:
Funktion gesetzt werden.
TFDQuery.ParamByName()
Da die %% am String direkt mitgegeben werden müssen habe ich ( noch ? ) keine Möglichkeit gefunden diese außerhalb des Parameters anzugeben. Mein SQL sieht also so aus:
Code:
wenn nun nach 'test' gesucht werden soll hängt das System automatisch die % an : '%test%'.
Select
* From Tabelle where Feld like :Parameter Das Funktioniert auch sehr gut, bis zu dem Moment in dem das entsprechende Feld auf zum beispiel 4 Stellen begrenzt ist, der Suchwert mit den % allerdings länger. Dann erhalte ich den Fehler, dass der Parameter länger als erlaubt ist. Selbst wenn ich sage, dass wenn der Suchwert genau der Feldlänge entspricht nun nach = anstelle von like gesucht wird hab ich ein Problem sofern der Suchwert nur 3 Stellen lang ist. es sollen ja alle Datensätze gefunden werden die den Suchwert enthalten und in dem Fall müsste ich das in der aktuellen Situation auf die Daten begrenzen die entweder damit beginnen oder enden. Gibt es eine Möglichkeit dem Query zu sagen "Ignoriere die %% beim Prüfen der Feldlänge"? Oder muss ich einfach gleich eine andere Funktion verwenden? Vielen lieben Dank schonmal :) |
AW: TFDQuery Param "like"
Versuch mal
Code:
und dann den Parameterwert ohne "%" angeben.
... where Feld like '%'||:Parameter||'%'
|
AW: TFDQuery Param "like"
natürlich!
da hätte ich auch mal selber drauf kommen können :D geht, danke |
AW: TFDQuery Param "like"
Oder auch so :
FDQuery1.SQL.Text := 'select * from tab where code = :Code'; FDQuery1.ParamByName('code').AsString := '123'; FDQuery1.Open; |
AW: TFDQuery Param "like"
= ist ja nicht dasselbe wie LIKE.
|
AW: TFDQuery Param "like"
aber jetzt so:
Delphi-Quellcode:
bzw. die Prozente nach Bedarf setzten. Du kannst Dir auch eine Variable bauen, in die Du den abzufragenden Wert nach belieben eingibst und die Variable dann an den Parameter übergibst.
FDQuery1.SQL.Text := 'select * from tab where code LIKE :Code';
FDQuery1.ParamByName('code').AsString := '%123%'; FDQuery1.Open; Grüße |
AW: TFDQuery Param "like"
Hast nicht ganz gelesen?
Im Parameter sind keine Prozent drin, darum müssen die eben ins SQL, um den Parameter. :roll: |
AW: TFDQuery Param "like"
Ich antworte dazu (#6) einfach mal mit einem Zitat aus dem aller ersten Post:
Zitat:
|
AW: TFDQuery Param "like"
SUPER.. Vielen Dank
Funktioniert jetzt .. und ist von überschüssigen Klammern und Co befreit :-) Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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-2025 by Thomas Breitkreuz