SQL-Statement

Hi!

Es geht um folgendes statement:

„SELECT * FROM LISTE WHERE NAME LIKE testname AND EINTRAG LIKE testeintrag“

Die LISTE besteht aus den Spalten NAME, EINTRAG, EINTRAG2, EINTRAG3. Erhalte ich mit dem obigen Statement alle Spalten, obwohl ich mit dem WHERE angebe, dass testname und testeintrag vorkommen sollen? Danke!

Gruss - lutz

„SELECT * FROM LISTE WHERE NAME LIKE testname AND EINTRAG LIKE
testeintrag“

  1. Welche DB?

  2. Eigentlich sollte testname unter einfache Anführungszeichen und wenn du alle Einträge willst wo testname vorkommt, dann mußt du mit Wildcards arbeiten, also in etwa name LIKE ‚%testname%‘.

  3. Gibts ein Forum „Datenbanken“ (das ich zufällig moderiere *g*), in das deine Frage viel besser paßt.

Grüße, Robert

„SELECT * FROM LISTE WHERE NAME LIKE testname AND EINTRAG LIKE
testeintrag“

  1. Welche DB?

Nennt sich HypersonicSQL.

  1. Eigentlich sollte testname unter einfache Anführungszeichen
    und wenn du alle Einträge willst wo testname vorkommt, dann
    mußt du mit Wildcards arbeiten, also in etwa name LIKE
    ‚%testname%‘.

Muss testname auch dann unter einfache Anführungszeichen, wenn ich den Wert von testname meine, also testname eine Stringvariable ist? % wird doch in java-code nicht verwendet soweit ich weiss. Bitte verbessern, wenn ich falsch liege.

  1. Gibts ein Forum „Datenbanken“ (das ich zufällig moderiere
    *g*), in das deine Frage viel besser paßt.

Ah! Danke! Bei folgenden Anfragen werde ich mich an das Datenbankforum wenden.

Gruss - lutz

Nennt sich HypersonicSQL.

Noch nie gehört. :smile:

Muss testname auch dann unter einfache Anführungszeichen, wenn
ich den Wert von testname meine, also testname eine
Stringvariable ist? % wird doch in java-code nicht verwendet
soweit ich weiss. Bitte verbessern, wenn ich falsch liege.

Da mußt du zwischen dem SQL Statement das du auf die Datenbank abfährst und dem Java-Programm unterscheiden. Im Prinzip (wenn du die Klasse Statement verwendest, PreparedStatement ist da eine andre Geschichte) ist das SQL-Statement das du in Richtung Datenbank absetzt für das Java-Programm ein String, d. h. da mußt du das in etwa so zusammenfügen:
String sWert = „xyz“;
oStatement.execute( „SELECT * FROM tab WHERE tab.feld LIKE '%“ + sWert + „%’“ );

Das „%“ interessiert Java gar nicht, das ist ein SQL-Wildcard.

Grüße, Robert

Nennt sich HypersonicSQL.

Noch nie gehört. :smile:

Naja, was empfielt der Profi? :smile:

String sWert = „xyz“;
oStatement.execute( „SELECT * FROM tab WHERE tab.feld LIKE '%“

  • sWert + „%’“ );

Bedeutet tab.feld der Spaltenname feld in der Tabelle tab?
Ich dachte, wenn ich angebe „SELECT * FROM tab“ gleicht SQL die folgenden Namen ab, also z.B. feld, aber da habe ich wohl falsch gedacht. Also muss man explizit angeben, dass es sich um Spalte feld in Tabelle tab handelt?

Das „%“ interessiert Java gar nicht, das ist ein SQL-Wildcard.

Ok, das muss ich ausprobieren. Danke!

Gruss - lutz

Naja, was empfielt der Profi? :smile:

Verwend das ruhig, nur weils unbekannt ist, heißt das nicht, dass es schlecht ist.

Bedeutet tab.feld der Spaltenname feld in der Tabelle tab?
Ich dachte, wenn ich angebe „SELECT * FROM tab“ gleicht SQL
die folgenden Namen ab, also z.B. feld, aber da habe ich wohl
falsch gedacht. Also muss man explizit angeben, dass es sich
um Spalte feld in Tabelle tab handelt?

Prinzipiell nicht, nur wenn es nicht eindeutig ist, also wenn du zwei Tabellen joinst die Spalten mit gleichem Namen haben. In meinem Beispiel war das „tab.feld“ überflüssig, „feld“ alleine hätte auch gereicht.

Grüße, Robert

Servus Lutz

Du erhältst mit diesem Statement alle Spalten der Tabelle „Liste“, weil du „select *“ angibst und der Stern bedeutet eben alle Felder. Die Spaltennamen bei der Where-Klausel bedeuten, dass du nur jene Datensätze erhältst, die den Bedingungen entsprechen, aber von diesen Sätzen eben alle Spalten.

Roland

„SELECT * FROM LISTE WHERE NAME LIKE testname AND EINTRAG LIKE
testeintrag“

Die LISTE besteht aus den Spalten NAME, EINTRAG, EINTRAG2,
EINTRAG3. Erhalte ich mit dem obigen Statement alle Spalten,
obwohl ich mit dem WHERE angebe, dass testname und testeintrag
vorkommen sollen? Danke!