MySQL: Vergleichsoperatoren

cr4m0

Angesehenes Mitglied
Gibt es einen Unterschied zwischen den Vergleichsoperatoren "LIKE" und "=" in MySQL? Die folgenden vier Beispiele liefern alle dieselbe Antwort:
1) SELECT * FROM tabelle WHERE id = 4
2) SELECT * FROM tabelle WHERE id = '4'
3) SELECT * FROM tabelle WHERE id LIKE = 4
4) SELECT * FROM tabelle WHERE id LIKE = '4'
Dabei ist es egal, ob das Feld "id" vom Typ varchar, integer oder einem anderen Typ ist. Also kann man - egal bei welchem Datentyp - immer die Abfrage wie bei 2) machen, oder?

Danke für eure Hilfe im Voraus!
 
Und sonst gibt es keine Unterschiede? Wieso gibt es "LIKE" dann überhaupt? Wenn "=" schneller ist und es sonst keine Unterschiede gibt, sollte ja jeder "=" nehmen, oder?
 
QUOTE (cr4m0 @ So 8.06.2008, 13:00) [...]
3) SELECT * FROM tabelle WHERE id LIKE = 4
4) SELECT * FROM tabelle WHERE id LIKE = '4'
[...]

Das scheint eher eine falsche Syntax zu sein, LIKE wird ohne Gleichheitszeichen verwendet und i.d.R. folgt darauf ein String. Dieser String kann mit % und/oder _ verwendet werden, wobei % für ein beliebiges Zeichen steht, welches X-Mal vorkommt und Unterstrich für ein beliebiges Zeichen.

Ob Beispiel 1 oder 2 schneller ist hängt wohl noch davon ab, auf welchen Datentyp sich bezogen wird.


Gruß,
Sascha
 
Danke für die Antwort!

Das mit dem "=" nach dem "LIKE" war ein Tippfehler. Also ist "LIKE" nur für die Suche mit Platzhaltern gedacht, wenn man keine Platzhalter braucht, sollte man "=" nehmen, richtig?

Aber nochmal zum "=": Warum liefern Abfragen mit Hochkommata und Abfragen ohne dieselben Ergebnisse? Dann kann man ja sowohl bei Integern als auch bei Strings die Hochkommata setzen!?
 
Es kann schon einen Unterschied machen, ob du Strings oder Integer miteinander vergleichst

Diese beiden Abfragen z.B. ergeben unterschiedliche Ergebnisse:

CODE SELECT 04 = 4;
SELECT '04' = '4';


Die erste ergibt 1 (wahr), die zweite 0 (falsch)
 
Achso, danke! Daran hab ich nicht gedacht. Aber wenn die Zahlen genau übereinstimmen machen auch die Hochkommata keinen Unterschied.
 
Zurück
Oben