SQL LIKE Befehl?
Hallo, ich lerne grad SQL und hab ein kleines Problem und zwar will ich aus einer Spalte (STRASSE) alle Strassen sehen die mindestens 2 Wörter haben! Meine Lösung ist!
SELECT STRASSE FROM Tabelle WHERE STRASSE LIKE '% %'in der Lösung steht aber
SELECT STRASSE FROM Tabelle WHERE STRASSE LIKE '% %' AND STRASSE NOT LIKE '% % %'Könnte mir bitte jemand die 3.te Zeile erklären?! Vielen Dank im Voraus!
3 Antworten
Deine Lösung selektiert alle Straßen, in der eine Leerstelle enthalten ist. Dazu zählen auch die Leerstellen hinter dem Straßennamen. Der zweite LIKE soll vermutlich letztere nicht berücksichtigen. In meiner Datenbank funktioniert das aber nicht.
Bei meinen Straßenamen (ca 20000 Beispiele) habe ich teilweise bis zu 2 Leerstellen außer den hinteren. Die Abfrage scheitert daran, dass man den LIKE nicht positionieren kann.
Nach einem Leerzeichen kann man nicht exklusiv abfragen, da zwei Leerzeichen auch die Bedingung erfüllen.
Vielleicht funktioniert es, wenn das Feld vom Typ varchar ist. Da sind hinten keine Leerstellen. Bei mir ist der Typ char.
Danke für die Auszeichnung.
Wenn für das Feld STRASSE keine speziellen Bedingungen vorgegeben sind und mit ganz normalen Straßennamen (mit Haus-Nrn wie z.B. 1a oder auch 1 a) in einem Feld fester Länge von meinetwegen 30 Zeichen, dann ist die Aufgabe in der hier diskutierten Art allgemein nicht lösbar, da sie im Falle von nachfolgenden Leerstellen jede Lösung mit LIKE verhagelt. Da mein Datenbanksystem mindestens 12 Jahre alt ist, könnte es in neueren Systemen zusätzliche Möglichkeiten geben, die ich nicht kenne.
Hallo!
Eigentlich ist es doch dasselbe, wie die zweite Zeile.
Der Strassenname soll nicht (NOT LIKE) aus drei Wörtern ('% % %') bestehen.
Also ist dies bei deiner Vorgabe (mindestens 2 Wörter) unnötig.
Gruß
... türlich kann das sein -- auch ein Prof ist nicht unfehlbar.
Lass es dir einfach von ihm erklären.
Aber wenn ich mir das so anschaue, bekommst du mit der ersten Lösung nur Strassen mit zwei Wörtern, um auch die mit drei Wörtern zu kriegen (also zusätzlich) brauchst du schon die zweite Lösung, nur darf es da nicht "NOT LIKE" heisen, sondern nur "LIKE", ist ja logisch.
"Zeige mir alle Strassen, die aus zwei Wörtern bestehen und die aus drei Wörtern bestehen"
Wie lautet denn die exakte Aufgabe deines Prof?
- Für ein "mindestens zwei Wörter" ist deine Abfrage ok - vorausgesetzt, du hast wirklich nur die Strasse in diesem Feld und nicht auch die Nummer.
- Für ein "exakt zwei Wörter" kommt die Lösung deines Prof näher, ist aber immer noch nicht korrekt, da es auch 4 Wörter und mehr haben kann und dieselbe Vorbedingung bezüglich der Nummer
- Nächstes Problem: Definiere "Wörter", denn viele Strassenbezeichnungen haben keine Leerschlag als Trennung sondern einen Bindestrich "Konrad-Adenauer-Strasse" oder so...
Textanalyse ist ein hochkomplexes Thema ;)
Hallo,
Ja, also das Problem ist, dass mindestens 2 heißt 2 oder mehr und ich habe Straßennamen mit 3 Wörter, die werden auch mit der Lösung von dem Prof angezeigt, deswegen checke ich das gar nicht! kann sein das seine Lösung falsch, also die 3.te Zeile?
Vielen Dank im Voraus!