JPQL-Query like

Hi,

in der Tabelle Article ist z.B. folgendes drin:

Artikelnummer | Artikelname
003421 | Buttermilch
003410 | Butter
003512 | Milch
012345 | Schokolade
011340 | Vollmilchschokolade

Nun habe ich ein
Code:
org.eclipse.swt.widgets.Text
erstellt und einen
Code:
org.eclipse.swt.widgets.Button
erstellt.

Diese Abfrage ...

Java:
Query q = em.createQuery("FROM Article a WHERE a.name like :name OR a.number like :number");

funktioniert perfekt, wenn ich exakt die Artikelnummer (ist ein String) oder den Artikelnamen in die Suchmaske eingebe. Ich möchte aber auch z.B. Buttermilch, Butter und Milch ausgegeben haben, wenn ich in die Suchleiste nur 00 eingebe.
Oder zum Beispiel Buttermilch und Butter, wenn ich "Butter" eingebe.

Wie realisiere ich das?
 
S

SlaterB

Gast
hast du dich je irgendwo grundsätzlich informiert wie LIKE in SQL funktioniert,
oder ist die erste Alternative, dir das hier im Forum aufwendig von jemanden erzählen zu lassen?

SQL LIKE

wenn du noch Groß-/ Kleinschreibung ignorieren willst, lautet die nächste Suchmaschinensuche 'sql like ignore case' ;)
 
Zuletzt bearbeitet von einem Moderator:
hast du dich je irgendwo grundsätzlich informiert wie LIKE in SQL funktioniert,
oder ist die erste Alternative, dir das hier im Forum aufwendig von jemanden erzählen zu lassen?

Als ob ich das, was du da verlinkt hast, schon nicht versucht hätte - bin ja nicht total bescheuert. Ich eröffne doch keinen Thread, bevor ich mich nicht selbst an die Aufgabe rangesetzt habe.

Übrigens funktioniert so etwas:

Java:
Query q = em.createQuery("FROM Article a WHERE a.name like %:name% OR a.number like :number%");

und das

Java:
Query q = em.createQuery("FROM Article a WHERE a.name like '%:name%' OR a.number like ':number%' ");

absolut gar nicht. Daher auch meine Frage.
 
S

SlaterB

Gast
also bei den Versuchen würde ich an deiner Stelle deinen eigenen Geisteszustand lieber nicht beurteilen,
aber nun genug der Gemeinheiten, sorry ;)

:name ist der Parameter für ALLES, die % müssen dort hinein, was dort als Parameter übergeben wird,
um Anführungszeichen musst du dich dabei überhaupt nicht kümmern

anders wäre es bei manuellen Zusammenbau, Beispiel
Java:
String x = "Butter";
Query q = em.createQuery("FROM Article a WHERE a.name like '%"+x+"%'";
aber das sollte lieber gar nicht erst versucht werden, :name ist viel besser, in den Parameter das %

was ist number eigentlich für ein Datentyp? LIKE ist eher nur für Text zu gebrauchen
 
also bei den Versuchen würde ich an deiner Stelle deinen eigenen Geisteszustand lieber nicht beurteilen,
aber nun genug der Gemeinheiten, sorry ;)

Darauf antworte ich nun wirklich nicht...

:name ist der Parameter für ALLES, die % müssen dort hinein, was dort als Parameter übergeben wird,
um Anführungszeichen musst du dich dabei überhaupt nicht kümmern

anders wäre es bei manuellen Zusammenbau, Beispiel
Java:
String x = "Butter";
Query q = em.createQuery("FROM Article a WHERE a.name like '%"+x+"%'";
aber das sollte lieber gar nicht erst versucht werden, :name ist viel besser, in den Parameter das %

Aha! Jetzt geht mir ein Licht auf. Wieso nicht gleich so, sondern erst mal paar Seitenhiebe austeilen? ;)

was ist number eigentlich für ein Datentyp? LIKE ist eher nur für Text zu gebrauchen

Soll ich so antworten wie du? :D Schrieb ich oben in Klammern, welchen Datentypen number hat. ;) Die Artikelnummer ist deswegen ein String, weil manche Artikelnummern auch Buchstaben enthalten.

Danke für deine Antwort nochmals.
 
S

SlaterB

Gast
Aha! Jetzt geht mir ein Licht auf. Wieso nicht gleich so, sondern erst mal paar Seitenhiebe austeilen? ;)
eben weil du nicht mit allen Informationen rausrückst, am Anfang nicht mit einem Wort erwähnt hast dass die % überhaupt bekannt ist

wenn du statt nebulösen
> Ich möchte aber auch z.B. Buttermilch, Butter und Milch ausgegeben haben
eher "ich bekomme bei mir die wohlbekannte %-Funktionialität von LIKE mit folgenden Versuchen nicht zum Laufen"
geschrieben hättest, wäre das Thema ganz anders verlaufen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
cowabunga1984 JPQL Query erstellen Java Basics - Anfänger-Themen 5
G AND-Verknüpfung in JPQL-Queries! Java Basics - Anfänger-Themen 2
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I Element n aus Datenbank Query (JPA / Hibernate) Java Basics - Anfänger-Themen 3
I JPA / Hibernate "Predicate" kombinieren in der gleichen Query Java Basics - Anfänger-Themen 1
I SQL / JPA Query für StartDate und EndDate Java Basics - Anfänger-Themen 1
D Command Query Separation Java Basics - Anfänger-Themen 21
I JAX-RS Mehrere Parameter in Query Java Basics - Anfänger-Themen 3
S Java Filter und Query Java Basics - Anfänger-Themen 4
G SQL View query Java Basics - Anfänger-Themen 4
lgund HashMap // TS3 Query Java Basics - Anfänger-Themen 7
W MySQL PreparedStatement query Problem Java Basics - Anfänger-Themen 10
X MySQL - Query Java Basics - Anfänger-Themen 3
D Derby DB zu Query?! Java Basics - Anfänger-Themen 9
B Java MySQL Query ausgeben Java Basics - Anfänger-Themen 4
J Java JDBC MySQL Query Java Basics - Anfänger-Themen 6
L SQL Query an andere Klasse übergeben Java Basics - Anfänger-Themen 3
G Frage zu Query Java Basics - Anfänger-Themen 8
L hsqldb - query als String ausgeben Java Basics - Anfänger-Themen 3
I Query aus Textdatei auslesen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben