| 

.NET C# Java Javascript Exception

5
Was ist der Unterschied zwischen like und =

Hat jemand auch ein Beispiel zu warum ich in welchem Fall was mache?

Danke! :)
News:
15.06.2011
Stieber 53 1 5
5 Antworten
4
Vereinfacht kann man sagen:

Eine Suche mit = führt man bei Zahlenwerten (insbesondere integer-Werten) durch. Die Suche läuft recht schnell. Verwendet man stattdessen bei Zahlen das LIKE, wandelt der Server erst umständlich die Zahl in einen String und vergleicht dann den String. Das hatte ich mal mit einer Tabelle mit über 23 Mio Zeilen versucht. Bei = geht das binnen Sekunden, mit LIKE bricht man da nach 5 min entnervt die Abfrage ab ;-)

Bsp:
SELECT * FROM tabelle WHERE id=5;

Wie dem schon zu entnehmen ist, ist LIKE der Operator für String-Vergleiche. Je nachdem, wie der Server eingestellt ist, werden bei der Suche Zeichen umgesetzt. Mein MySQL-Server ist z. B. so eingestellt, dass beide Abfragen das gleiche Ergebnis liefern:

Bsp:
SELECT * FROM tabelle WHERE name LIKE '%hans%';
SELECT * FROM tabelle WHERE name LIKE '%Hans%';

Zudem: Jaksa hat ja schon die Suchmuster erwähnt. Versteht sich von selbst, dass Muster nur mit Strings gesucht werden und nicht mit Werten.
15.06.2011
muffi 1,4k 1 9
Danke :) Alle Antworten sind hilfreich! Welche soll ich annehmen? :)
Stieber 15.06.2011
Ausserdem nicht die Feldlänge vergessen: in einem Char(10) Feld wird die Suche nach Name='Hans' nichts finden, auch wenn Du ein Datensatz mit Inhalt Hans haben solltest
Jaksa 15.06.2011
ah ok danke.
Stieber 15.06.2011
= muss man nicht nur bei Zahlenwerten durchführen. Geht auch mit Strings, aber dann wird (wie bei Zahlen) nur auf vollständige Gleichheit geprüft.
theorist 18.06.2011
6
Nun das ist einfach zu erklären.

=
Diesen Vergleichsoperator nutzt du, wenn du z.B. einen expliziten Wert suchst.

Beispiel:
--Der gesuchte Wert muss exakt 100 sein
SELECT * FROM Produkt WHERE Qualitaet = 100
--Der gesuchte Wert muss exakt 'Hans%' sein
SELECT * FROM Produkt WHERE Name = 'Hans%'

Diese beiden Abfragen würden dir nur Werte zurückliefern, die auch wirklich 100 bzw. Hans% sind.


LIKE
Diesen Operator benutzt du, wenn du ein Suchmuster anwenden willst.

Beispiel:
--Der gesuchte Wert muss den Wert '100%' enthalten
--Würde so aussehen: 100, 10000, 1000000, etc.
SELECT * FROM Produkt WHERE Qualitaet LIKE 100
--Ich suche alle Personen, die den Namens Hans tragen
--Würde so aussehen: Hans, Hans-Peter, Hans-Franz, etc.
SELECT * FROM Produkt WHERE Name LIKE 'Hans%'


Ich hoffe es ist verständlich.
15.06.2011
Konstantin 3,7k 8
Hast du bei LIKE vergessen die '=' zu ersetzen?
Stieber 15.06.2011
Ah perfekt danke auch dir herzlich.
Stieber 15.06.2011
1
Ups =) Ist korrigiert.
Konstantin 15.06.2011
4
15.06.2011
Jaksa 4,0k 1 8
Jaksa 4,0k 1 8
Danke :) Alle Antworten sind hilfreich! Welche soll ich annehmen? :)
Stieber 15.06.2011
Die von Muffi finde ich am ausfühtlichsten. Grundsätlich sollst Du die annehmen, die DIR am Besten gefällt
Jaksa 15.06.2011
3
Man sollte noch erwähnen, dass = oft wesentlich schneller durchgeführt werden kann als LIKE, da Indizes besser genutzt werden können. Ein LINK '%Test%' ist zwar nett, aber da hilft ein einfacher Index nichts und es muss ein full table scan durchgeführt werden.
16.06.2011
theorist 494 6
1
so weit ich mich erinnern kann, hat der alte oracle optimizer (den aktuellen stand kenne ich nicht, wird aber wohl nicht schlechter geworden sein) sehr wohl erkannt, ob die in der where klausel verwendeten abfragen über einen index zu lösen sind. und falls ALLE IN DER WHERE KLAUSEL VERWENDETEN spalten indiziert ist, muss er zwar vielleicht den ganzen index lesen, das ist aber meist weniger als die ganze tabelle. aber genau kann man das erst feststellen, wenn man sich den execution plan angesehen hat. und dann kann man immer noch an den schräubchen (=indices) drehen.
nabuchodonossor 17.06.2011
Wenn der Index aber nicht die Werte enthält, sondern nur die Reihenfolge der Datensätze bezüglich einer Sortierung (Spalte) angibt, ist mit dem Lesen des Indexes nichts gewonnen. Du brauchst trotzdem den Full Table Scan, da Teilwortsuchen nicht mit einer Sortierung eingeschränkt werden können.
theorist 19.06.2011
0
This is the best place that we have got here to get the someones snapchat account details. Earlier i have been asking question how to hack snapchat online.
20.04.2017

Stelle deine Sql-Frage jetzt!