Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Habe ein Problem mit einer Suche/Abfrage

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Evil Teddy, 25 November 2014.

  1. Evil Teddy

    Evil Teddy Benutzer

    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
     
  2. Hony%

    Hony% Datenbank-Guru

    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
     
  3. akretschmer

    akretschmer Datenbank-Guru

    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)
    
     
  4. Evil Teddy

    Evil Teddy Benutzer

    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 + "%')"
    );
     
  5. akretschmer

    akretschmer Datenbank-Guru

    NULL - Werte ;-)
     
  6. Evil Teddy

    Evil Teddy Benutzer

    Und wert1 - wert7 können halt werte enthalten oder auch nicht.
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Genau.
     
  8. Evil Teddy

    Evil Teddy Benutzer

    Und was sagt mir das jetzt? Ich muss das ja irgendwie umsetzen das da mal werte kommen oder mal nicht... Ich sehe einfach keine andere Lösung. :(
     
  9. akretschmer

    akretschmer Datenbank-Guru

    #3
     
  10. Evil Teddy

    Evil Teddy Benutzer

    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;
     
  11. Hony%

    Hony% Datenbank-Guru

    Hast Recht.
    % funktioniert mit Leerstrings '' aber nicht mit NULL-Werten.
     
  12. Evil Teddy

    Evil Teddy Benutzer

    Es sind doch leere String die ich da übergeben würde und keine NULL-Werte. ^^
     
  13. Hony%

    Hony% Datenbank-Guru

    Ja eben. :)
     
  14. Evil Teddy

    Evil Teddy Benutzer

    Aber es funktioniert ja nicht. :D Ich bekomme immer ein leeres result zurück. :(
     
  15. Hony%

    Hony% Datenbank-Guru

    Trotz des Einsatzes von COALESCE?
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden