AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TFDQuery Param "like"
Thema durchsuchen
Ansicht
Themen-Optionen

TFDQuery Param "like"

Ein Thema von Emwykey · begonnen am 15. Jun 2018 · letzter Beitrag vom 6. Aug 2020
Antwort Antwort
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#1

TFDQuery Param "like"

  Alt 15. Jun 2018, 12:44
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDAC
Hallo Zusammen,

ich habe folgende SQL Abfrage:
Code:
Select
*
From Tabelle
where Feld like '%test%'
den Suchwert soll über die
Code:
TFDQuery.ParamByName()
Funktion gesetzt werden.

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:
Select
*
From Tabelle
where Feld like :Parameter
wenn nun nach 'test' gesucht werden soll hängt das System automatisch die % an : '%test%'.

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
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#2

AW: TFDQuery Param "like"

  Alt 15. Jun 2018, 12:57
Versuch mal
Code:
... where Feld like '%'||:Parameter||'%'
und dann den Parameterwert ohne "%" angeben.
  Mit Zitat antworten Zitat
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#3

AW: TFDQuery Param "like"

  Alt 15. Jun 2018, 13:13
natürlich!

da hätte ich auch mal selber drauf kommen können geht, danke
  Mit Zitat antworten Zitat
sks3se

Registriert seit: 6. Feb 2004
Ort: Sebnitz
2 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: TFDQuery Param "like"

  Alt 20. Jun 2018, 11:03
Oder auch so :

FDQuery1.SQL.Text := 'select * from tab where code = :Code';
FDQuery1.ParamByName('code').AsString := '123';
FDQuery1.Open;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

AW: TFDQuery Param "like"

  Alt 20. Jun 2018, 11:50
= ist ja nicht dasselbe wie LIKE.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TFDQuery Param "like"

  Alt 20. Jun 2018, 12:46
aber jetzt so:

Delphi-Quellcode:
FDQuery1.SQL.Text := 'select * from tab where code LIKE :Code';
FDQuery1.ParamByName('code').AsString := '%123%';
FDQuery1.Open;
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.

Grüße
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#7

AW: TFDQuery Param "like"

  Alt 20. Jun 2018, 13:20
Hast nicht ganz gelesen?

Im Parameter sind keine Prozent drin,
darum müssen die eben ins SQL, um den Parameter.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: TFDQuery Param "like"

  Alt 20. Jun 2018, 13:21
Ich antworte dazu (#6) einfach mal mit einem Zitat aus dem aller ersten Post:

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.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
460 Beiträge
 
Delphi XE4 Professional
 
#9

AW: TFDQuery Param "like"

  Alt 6. Aug 2020, 11:23
SUPER.. Vielen Dank

Funktioniert jetzt .. und ist von überschüssigen Klammern und Co befreit

Danke
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:11 Uhr.
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