Kann ich Mehrere Werte in eine "NOT LIKE" abfrage in SQl abfragen?
Hallo
Aufgabenstellung: Ermitteln Sie alle Kunden mit dem Namen Sigmund Maier und Tina Maier, die weder in Altshausen noch in Mainz wohnen!
Mein Lösungsversuch:
SELECT * FROM t_kunde
WHERE VORNAME="sigmund" and NACHNAME="Maier" OR
VORNAME="Tina" and NACHNAME="Maier" AND
ORT NOT LIKE "Mainz" AND NOT LIKE "Altshausen";
Wenn ich das (AND NOT LIKE "Altshausen";) entferne, geht meine abfrage durch jedoch ohne berücksichtigung drauf das ich Altshausen nicht ausgegeben haben möchte. Was mache ich Falsch? Liegt es an der Schreib weise das ich ein Error bekomme?
3 Antworten
LIKE nutzt man nur bei einer Suche nach einem Stringteil. Bei einem kompletten Vergleich brauch man kein Like sonder = bzw. !=
Bei kompletten Vergleichen gibt es dann IN, was genau deine Lösung wäre hier. Abgesehen davon, dass die AND und ORs ggf noch gruppiert werden müssten. Auf Verdacht mal so etwa (findet alle "Sigmund Maier" oder "Tina Maier" die nicht in Mainz oder Altshausen wohnen):
SELECT * FROM t_kunde
WHERE VORNAME IN ("sigmund","Tina") and NACHNAME="Maier" AND
ORT NOT IN ("Mainz","Altshausen");
Sowas in der Art halt...
Maximale Erfolge!
ORT NOT LIKE "Mainz" AND ORT NOT LIKE "Altshausen";
Das Attribut musst du natürlich immer mit angeben. LIKE verwendet man allerdings immer dann, wenn man etwas unschärfer suchen will. Z.B. like '%Altshaus%'
ja, das geht. da musst du die beiden begriffe in eine liste packen. oder ein alias.