Ich lerne jetzt MySQL. Ich brauche Ihre Hilfe, den Unterschied zwischen diesen Abfragen zu verstehen:Unterschied zwischen like und Regex-Operator
select id from tab where id like '000';
select id from tab where id regex '000';
Ich lerne jetzt MySQL. Ich brauche Ihre Hilfe, den Unterschied zwischen diesen Abfragen zu verstehen:Unterschied zwischen like und Regex-Operator
select id from tab where id like '000';
select id from tab where id regex '000';
Ihre erste Abfrage like
Operator verwendet aber verwendet keinen Platzhalter. So ist es gleichbedeutend mit:
select id from tab where id = '000';
die nur listet die id
ist, wo id
000
ist.
Die zweite Abfrage verwendet regex
Operator und Zeilen listet wo id
000
überall in ihm hat.
Beispiel: Es wird Liste dieses id
‚s: 1000
, 2000
, 000
, 0001
Um Ihre erste Abfrage wie der zweite verhalten machen Sie Wild Card %
verwenden werden, haben die Null entspricht oder weitere Zeichen:
select id from tab where id like '%000%';
um Ihre zweite Abfrage wie die Faust verhalten machen Sie Start Anker (^
) und End-Anker verwenden werden müssen ($
):
select id from tab where id regex '^000$';
Nur falls Sie die erste Aussage gemeint sein:
select id from tab where id like '%000%';
Das bedeutet: etwas (oder nichts), gefolgt von '000', gefolgt von etwas (oder nichts) .
Dies passiert genau was id regex '000'
tut.
Grundsätzlich funktioniert LIKE
sehr einfache Wildcard-Übereinstimmungen und REGEX
ist in der Lage, sehr komplizierte Wildcard-Übereinstimmungen zu erstellen.
In der Tat, reguläre Ausdrücke (REGEX
) sind so in der Lage, dass sie [1] eine ganze Studie in sich [2] eine einfache Möglichkeit zur Einführung sehr subtile Bugs sind. Habe Spaß.
Der Operator wie ermöglicht die Angabe von Platzhaltern mit dem Operator %.
Wenn Sie zum Beispiel alle Wörter angeben müssen beginnend mit dem Zeichen ein, können Sie dies tun, indem Sie den Wert mit „a%“. Sie können auch die Wörter endend mit einer Zeichenfolge angeben. Z.B. Wörter mit Endung ing können Sie
mit „% ing“ angegeben werden auch Parameter haben könnte Spalten enthalten Werte angeben, die eine bestimmte Zeichenfolge enthalten. Z.B.Worte, die die Zeichen Fisch enthalten „% Fisch%“ regelmäßig werden angegebener Ausdruck geben mit dem wie Parameter
Regexp (Ich glaube nicht, dass es ein regulärer Ausdruck Operator) auf der anderen Seite ermöglicht es Ihnen, Vergleichen von Werten in einer Spalte mit einem Parameter. Wenn Sie beispielsweise alle Datensätze abrufen möchten, die einer Telefonnummer im Format 555-666-7777 entsprechen, können Sie den Parameter "[[: digit:]]] {3} \ - [[: digit:]] { 3} \ - [[: digit:]] {4} "
z SELECT * FROM Telefonbuch WHERE Telefon REGEXP "[[: digit:]] {3} \ - [[: digit:]] {3} \ - [[: digit:]] {4}"
Bitte Weitere Informationen über den Operator REGEXP finden Sie unter http://dev.mysql.com/doc/refman/5.1/en/regexp.html.
Um das hinzuzufügen: Es würde * Unterschiede * sein, wenn Ihre Abfragen waren ... wie '000%' und ''wie' 000_'' und' ... regex '000 [[: alnum:]] + ''und ... du wirst die Idee bekommen;) – FrustratedWithFormsDesigner