Habe ein Problem mit einer Suche/Abfrage

Evil Teddy

Benutzer
Beiträge
19
Hallo Leute,

ich habe ein Problem mit einer Suche. Ich möchte in einer Tabelle in allen Spalten unterschiedliche werte abfragen. Es wird dabei nicht immer in allen gleichzeitig abgefragt. Mal wäre es nur eine, manchmal zwei oder es könnte auch vorkommen das in allen gesucht wird.

Hier in meinem Beispiel wird nur in der ersten gesucht nach "tes..." die anderen müssen auch abgefragt werden sind in diesem Fall aber leer. (Vor dem Prozent wird immer ein Wert angegeben)

Leider funktioniert diese Suche nicht.... es wird mir immer eine leere Tabelle zurück gegeben.

SELECT * FROM Tabellen_Name WHERE
Spalte1 LIKE tes% AND
Spalte2 LIKE % AND
Spalte3 LIKE % AND
Spalte4 LIKE % AND
Spalte5 LIKE % AND
Spalte6 LIKE % AND
Spalte7 LIKE %

Vielleicht könnt ihr mit helfen, das wäre echt super.

Viele Dank
Teddy
 
Werbung:
Hi,

das Query sollte auf den ersten Blick eigentlich funktionieren. Zumindest wenn du das Pattern in Hochkommata setzt. Ohne würde ich ehrlich gesagt eher eine Fehlermeldung als eine leere Ergebnismenge erwarten.

Gruß
Hony
 
Hallo Leute,

ich habe ein Problem mit einer Suche. Ich möchte in einer Tabelle in allen Spalten unterschiedliche werte abfragen. Es wird dabei nicht immer in allen gleichzeitig abgefragt. Mal wäre es nur eine, manchmal zwei oder es könnte auch vorkommen das in allen gesucht wird.

Hier in meinem Beispiel wird nur in der ersten gesucht nach "tes..." die anderen müssen auch abgefragt werden sind in diesem Fall aber leer. (Vor dem Prozent wird immer ein Wert angegeben)

Leider funktioniert diese Suche nicht.... es wird mir immer eine leere Tabelle zurück gegeben.

SELECT * FROM Tabellen_Name WHERE
Spalte1 LIKE tes% AND
Spalte2 LIKE % AND
Spalte3 LIKE % AND
Spalte4 LIKE % AND
Spalte5 LIKE % AND
Spalte6 LIKE % AND
Spalte7 LIKE %

Vielleicht könnt ihr mit helfen, das wäre echt super.

Viele Dank
Teddy

Dann laß die Conditions doch weg. Wenn da ein NULL ist ist Dein LIKE nicht erfüllt. Außerdem ist das, was Du zeigst, massiv syntaktisch falsch.

Code:
test=*# select * from blabla ;
 c1  | c2 | c3
-----+----+----
 tes |  |
(1 row)

test=*# select * from blabla where c1 like 'tes%' and c2 like '%';
 c1 | c2 | c3
----+----+----
(0 rows)

test=*# select * from blabla where c1 like 'tes%' and coalesce(c2,'') like '%';
 c1  | c2 | c3
-----+----+----
 tes |  |
(1 row)
 
Also die sind in Hochkommata gesetzt und sieht bei mir so aus:

ResultSet result = stmt.executeQuery("SELECT * FROM Tabelle WHERE "+
"(Spalte1 LIKE '" + wert1 + "%') AND "+
"(Spalte2 LIKE '" + wert2 + "%') AND "+
"(Spalte3 LIKE '" + wert3 + "%') AND "+
"(Spalte4 LIKE '" + wer4 + "%') AND "+
"(Spalte5 LIKE '" + wert5 + "%') AND "+
"(Spalte6 LIKE '" + wert6 + "%') AND "+
"(Spalte7 LIKE '" + wert7 + "%')"
);
 
Und kann ich das dann einfach weiter fortführen? Also:

test=*# select * from blabla where c1 like 'tes%' and coalesce(c2,'') like '%' and coalesce(c3,'') like '%' and coalesce(c4,'') like '%' ..usw;
 
Werbung:
Zurück
Oben