Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi WHERE über alle Felder (https://www.delphipraxis.net/67823-where-ueber-alle-felder.html)

Angel4585 20. Apr 2006 13:10

Datenbank: MySQL • Version: 5 • Zugriff über: ZEOS

WHERE über alle Felder
 
Hallo zusammen,

wie kann ich eine WHERE Klausel über alle Felder machen ohne jedes Einzelne anzugeben?

Also sowas wie

SQL-Code:
SELECT * FROM Tabelle
WHERE * LIKE "%Suchbegriff%"
leider funktioniert dies so nicht. Weis jemand wie ich das schaffe?

MfG Angel4585

Sharky 20. Apr 2006 13:10

Re: WHERE über alle Felder
 
Zitat:

Zitat von Angel4585
... Weis jemand wie ich das schaffe? ...

Hai Angel4585,

ich fürchte das es nicht gehen wird. Du musst schon die Felder angeben.

Angel4585 20. Apr 2006 13:13

Re: WHERE über alle Felder
 
hmm.. OK.. aber die Frage wars Wert... THX Sharky :dp:

:angel:


MÖÖÖPPP

Wie sieht dann das Statement aus?

SQL-Code:
SELECT * FROM Tabelle
WHERE Feld1,Feld2,Feld3,..,Feldn LIKE "%Suchbegriff%"
scheint nicht zu gehen.

Muss ich den Suchbegriff etwas für jedes Feld extra angeben??
:shock:

Also so:

SQL-Code:
SELECT * FROM Tabelle
WHERE (Feld1 LIKE "%Suchbegriff%")OR(Feld2 LIKE "%Suchbegriff%")
?!?! :shock:

Also meine Version ist da etwas kürzer :stupid: , oder kann ich das doch irgendwie abkürzen? :gruebel:

mkinzler 20. Apr 2006 18:29

Re: WHERE über alle Felder
 
Zitat:

Muss ich den Suchbegriff etwas für jedes Feld extra angeben??
Ja!

jim_raynor 20. Apr 2006 18:57

Re: WHERE über alle Felder
 
Ich weiß nicht ob es performanter ist aber bestimmt kürzer ;) Einfach die Felder per Stringverknüpfung verketten

SQL-Code:
SELECT * from tabelle where feld1||feld2||feld3 like "%suchbegriff%";
P.S: mit || ist die String-Verknüpfung gemeint, falls es nicht der Standard ist ...

mkinzler 20. Apr 2006 19:06

Re: WHERE über alle Felder
 
@jim_raynor: Bist du sicher das diese Verkettung in der where-clause funktioniert?

raiguen 20. Apr 2006 19:55

Re: WHERE über alle Felder
 
Moin :-)
hab mal grad eben den Vorschlag von jim_raynor getestet -> Jau, das geht so mit der Verkettung der Felder, sprich suchen über alle Felder! Zumindest bei meiner DB Absolute Database bekomme ich entsprechende Ergebnisse :-)
Hätt ich ehrlich gesagt nicht für möglich gehalten, dass das funzt...

Hansa 20. Apr 2006 20:57

Re: WHERE über alle Felder
 
Das geht mit Sicherheit so. Ob die Ergebnismenge nun aus einzelnen Feldern oder zusammengesetzten besteht ist völlig egal. In diesem Ergebnisfeld wird dann nachgeschaut, ob der Suchbegriff darin vorkommt.

Das hier müsste auch gehen :

SQL-Code:
SELECT * from TABELLE where upper (Feld1||Feld2) like '%SUCH%';
Vielleicht noch mit ein paar Decimals per CAST bestücken als Würze. :mrgreen: Aber die Idee ist nicht schlecht ! Werde das in (zurückgestelltem) konkreten Fall sogar so machen. Da verwechselt ein Penner immer die Anrede und den Namen und wundert sich, daß nichts gefunden wird. :zwinker:

MrSpock 20. Apr 2006 21:27

Re: WHERE über alle Felder
 
Hallo,

noch eine Bemerkung: wenn Feld1 den Eintrag "Mr" und Feld2 den Eintrag "Spock" hat liefert die Konkatenierungslösung bei der Suche nach "MrSpock" auch einen Treffer :mrgreen:

Peter Mössinger 20. Apr 2006 21:27

Re: WHERE über alle Felder
 
Zitat:

Zitat von Hansa

SQL-Code:
SELECT * from TABELLE where upper (Feld1||Feld2) like '%SUCH%';

Vielleicht findest Du so aber zu viel. Stell Dir vor, Feld1 hört mit SU auf und Feld2 beginnt mit CH. Durch den Concat würde der Satz gefunden werden. Vielleicht sollte man es eher so machen:

SQL-Code:
SELECT * from TABELLE where upper (Feld1 || '-' || Feld2 || '-' ...) like '%SUCH%';
und '-' ist ein Wert, der in den Suchausdrücken nicht vorkommen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr.
Seite 1 von 2  1 2      

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