"Gegenstück" zu LIKE
Petra
- datenbank
Hallo,
ich habe in einer DB Spalte z.B. folgendes:
+--------+
|foo +
+--------+
|foobar +
+--------+
|bar +
+--------+
Mit SELECT spalte FROM tabelle WHERE spalte LIKE '%foo%'
bekomme ich die ersten beiden Datensätze. O.k., aber geht das auch "anders herum", also:
SELECT spalte FROM tabelle WHERE >DasGegenstückZuLike< 'Ich sitze in einer bar'
sollte mir dann den lezten Datensatz zurück geben weil der Inhalt von spalte ('bar') nur dort in der Klausel enthalten ist.
Gibt es so etwas?
LG
Petra
Hello,
Petra meinte nicht "das Gegenteil" sondern "das Gegenstück", also eine Abfrage, bei der die Argumente vertauscht sind.
Und ja, ich finde auch, dass sich die Lösung von Matti ganz pfiffig ist, auch wenn sie vermutlich extrem teuer sein wird, wie alle LIKE-Abfragen eben.
Ich habe sie jedenfalls in meine Sammlung aufgenommen :-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
ich habe in einer DB Spalte z.B. folgendes:
+--------+
|foo +
+--------+
|foobar +
+--------+
|bar +
+--------+Mit
SELECT spalte FROM tabelle WHERE spalte LIKE '%foo%'
kommt
Ich weiß nicht genau, was Du mit "Gegenteil" meinst. Deshalb zwei Teile:
(Part 1: Like)
Mit SELECT spalte FROM tabelle WHERE spalte LIKE '%bar'
kommt
Mit SELECT spalte FROM tabelle WHERE spalte LIKE 'bar%'
kommt
Mit SELECT spalte FROM tabelle WHERE spalte LIKE 'bar%'
kommt
Mit SELECT spalte FROM tabelle WHERE spalte LIKE 'f%bar%'
kommt
(Part 2: REGEX:)
Das "Feinverhalten" lässt sich mit einem REGEX bestimmen:
Mit SELECT spalte FROM tabelle WHERE spalte = REGEX('^[Bb]ar.*$')
kommt
Mit SELECT spalte FROM tabelle WHERE spalte = REGEX('^.*[Bb]ar$')
kommt
Reguläre Ausdrücke sind "teuer" (brauchen "lange" fürs Abarbeiten) und verursachen einen Lernaufwand - der sich allerdings lohnt.
Jörg Reinholz
Hi,
Mit
SELECT spalte FROM tabelle WHERE spalte LIKE '%foo%'
bekomme ich die ersten beiden Datensätze. O.k., aber geht das auch "anders herum", also:
SELECT spalte FROM tabelle WHERE >DasGegenstückZuLike< 'Ich sitze in einer bar'
sollte mir dann den lezten Datensatz zurück geben weil der Inhalt von spalte ('bar') nur dort in der Klausel enthalten ist.Gibt es so etwas?
Das geht ebenfalls mit LIKE, ist aber nicht sonderlich schön...
SELECT spalte FROM tabelle WHERE 'Ich sitze in einer bar' LIKE CONCAT('%', spalte, '%')
Bis die Tage,
Matti
Hallo,
Das geht ebenfalls mit LIKE, ist aber nicht sonderlich schön...
SELECT spalte FROM tabelle WHERE 'Ich sitze in einer bar' LIKE CONCAT('%', spalte, '%')
Das ist eine von diesen Juwelen, für die es sich lohnt, hier regelmäßig mitzulesen...
Gruß
Kalk
Das geht ebenfalls mit LIKE, ist aber nicht sonderlich schön...
SELECT spalte FROM tabelle WHERE 'Ich sitze in einer bar' LIKE CONCAT('%', spalte, '%')
Kommt mir doch bekannt vor.
http://forum.de.selfhtml.org/archiv/2008/4/t169368/#m1106146http://
WHERE INSTR('Ich sitze in einer Bar', spalte) > 0
ginge auch ...
Hello,
WHERE INSTR('Ich sitze in einer Bar', spalte) > 0
wenn es jetzt schon weiter in die Tiefe geht, sollte man auch daran denken:
Das müsste man ggf. auch berücksichtigen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg