Heim  >  Artikel  >  Datenbank  >  MySQL-Operator

MySQL-Operator

伊谢尔伦
伊谢尔伦Original
2016-11-23 13:08:411028Durchsuche

1. Operator-Priorität

Die folgende Liste zeigt die Reihenfolge der Operator-Priorität von niedrig nach hoch. In derselben Zeile aufgeführte Operatoren haben dieselbe Priorität.

:=

||, OR, ELSE

=, 96b4fef55684b9312718d5de63fb7121, >=, >, 59ed3ba4284a0a81c059290362cbdd58, !=, IS, LIKE, REGEXP, IN

|

&

071af19a55f4da1989e8c02b755ba052>

-,

*, /, DIV, %, MOD

^

- (unäres Minuszeichen), ~ (unäre Bitumkehr)

!

BINARY, COLLATE

Hinweis: Bei HIGH_NOT_PRECEDENCE SQL-Modus aktiviert ist, hat NOT die gleiche Priorität wie der !-Operator.

2. Klammern

( ... ) verwenden Sie Klammern, um die Reihenfolge der Operation von Ausdrücken anzugeben, zum Beispiel:

3. Vergleichsfunktionen und Operatoren

Das Ergebnis der Vergleichsoperation ist 1 (WAHR), 0 (FALSCH) oder NULL. Diese Operationen können auf Zahlen und Zeichenfolgen angewendet werden. Zeichenfolgen werden automatisch in Zahlen umgewandelt, und Zahlen werden bei Bedarf automatisch in Zeichenfolgen umgewandelt.

Einige Funktionen in diesem Kapitel (z. B. LEAST() und GREATEST()) enthalten nicht 1 (TRUE), 0 (FALSE) und NULL. Der resultierende Wert basiert jedoch auf einer Vergleichsoperation, die nach den folgenden Regeln arbeitet:
mysql> SELECT 1+2*3;
        -> 7
mysql> SELECT (1+2)*3;
        -> 9

MySQL führt numerische Vergleiche nach den folgenden Regeln durch:

Wenn eines oder beide Argumente NULL sind, es sei denn NULL-sicher 96b4fef55684b9312718d5de63fb7121 und andere Operatoren, das Ergebnis der Vergleichsoperation ist NULL.

Wenn die beiden Parameter in derselben Vergleichsoperation beide Zeichenfolgen sind, basiert der Vergleich auf den Zeichenfolgen.

Wenn beide Parameter Ganzzahlen sind, vergleichen Sie sie als Ganzzahlen.

Hexadezimale Werte werden als Binärzeichenfolgen verarbeitet, wenn sie nicht als Zahlen verglichen werden müssen.

Wenn einer der Parameter eine TIMESTAMP- oder DATETIME-Spalte ist und die anderen Parameter Konstanten sind, werden die Konstanten vor dem Vergleich in Zeitstempel konvertiert. Der Zweck besteht darin, ODBC reibungsloser zu gestalten. Beachten Sie, dass dies nicht für Parameter in IN() gilt! Aus Gründen der Zuverlässigkeit werden bei Vergleichen normalerweise vollständige Datums-/Datums-/Uhrzeitzeichenfolgen verwendet.

In anderen Fällen werden Argumente als Gleitkommazahlen verglichen.

Standardmäßig wird bei Zeichenfolgenvergleichen die Groß-/Kleinschreibung nicht beachtet und der vorhandene Zeichensatz verwendet (standardmäßig cp1252 Latin1, auch für Englisch geeignet).

Zum Vergleich können Sie die Funktion CAST() verwenden, um einen Wert in einen anderen Typ zu konvertieren. Verwenden Sie CONVERT(), um einen Zeichenfolgenwert in einen anderen Zeichensatz zu konvertieren.

Das folgende Beispiel veranschaulicht den Prozess der Konvertierung von Zeichenfolgen in Zahlen bei Vergleichsoperationen:

MYSQL> '6x';

->

mysql> SELECT 7 > '6x';

MYSql> 0 > 🎜>

mysql> SELECT 0 = 'x6';

-> 1

Beachten Sie, dass MySQL beim schnellen Vergleichen einer Zeichenfolgenspalte keine Spalten verwenden kann suchen. Wenn str_col eine indizierte Zeichenfolgenspalte ist, kann der Index die Suchfunktion in der folgenden Anweisung nicht ausführen:

SELECT * FROM tbl_name WHERE str_col=1;

Der Grund dafür ist, dass viele verschiedene Zeichenfolgen konvertiert werden können zu numerischen Werten 1: '1', ' 1', '1a', ...

=

ist gleich:

mysql> 0;

-> 0

MYSQL> SELECT '0' = 0;

-> SELECT '0.0' = 0;

-> 1

MYSQL> 0;

MYSQL> = 0,01;

-> 1

96b4fef55684b9312718d5de63fb7121

Dieser Operator führt die gleiche Vergleichsoperation wie der =-Operator aus, jedoch wenn beide Opcodes sind NULL, der resultierende Wert ist 1 und nicht NULL, und wenn ein Opcode NULL ist, ist der resultierende Wert 0 und nicht NULL.

mysql> 1, NULL 96b4fef55684b9312718d5de63fb7121 NULL;

->

mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;

-> 1, NULL, NULL

a8093152e673feb7aba1828c43532094 !=

Ungleich:

mysql> SELECT '.01';

-> ' 0,01';

-> 0

MYSQL> SELECT 'zapp';

-> < ;=

Kleiner als oder gleich:

mysql> :

mysql> SELECT 2 e371dfb7e514c2356e012f449b0ccaad 0

>=

größer oder gleich:

mysql>= 2;

-> 1

>

ist größer als:

SELECT 2 > ; 2;

-> 0

IS boolean_value IS NOT boolean_value

Testen Sie einen Wert basierend auf einem booleschen Wert, wobei der boolesche Wert WAHR, FALSCH oder UNBEKANNT sein kann .

mysql> SELECT 1 IST WAHR, 0 IST FALSCH, NULL IST UNBEKANNT;

-> 1, 1, 1

SELECT 1 IST NICHT UNBEKANNT, 0 IST NICHT UNBEKANNT, NULL IST NICHT UNBEKANNT;

-> 1, 1, 0

IS NULL IST NICHT NULL

Überprüft, ob ein Wert NULL ist.

mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;

-> 0, 0, 1

mysql> IS NOT NULL, NULL IS NOT NULL;

-> 1, 1, 0

Um reibungslos mit ODBC-Programmen zu arbeiten, unterstützt MySQL bei Verwendung von IS NULL die folgenden zusätzlichen Funktionen:

Führen Sie a aus Anweisung des folgenden Formats unmittelbar nach der Generierung eines Werts, um die Zeile mit dem neuesten AUTO_INCREMENT-Wert zu finden: Dieser Vorgang kann nicht ausgeführt werden, wenn SQL_AUTO_IS_NULL=0 festgelegt ist.

Für DATE- und DATETIME-Spalten mit dem Namen NOT NULL kann ein bestimmtes Datum „0000-00-00“ mithilfe der folgenden Anweisung gefunden werden:

o SELECT * FROM tbl_name WHERE date_column IS NULL

Sie müssen eine ODBC-Anwendungssoftware verwenden, um diesen Schritt auszuführen, da ODBC selbst den Zeitwert „0000-00-00“ nicht unterstützt.

expr BETWEEN min AND max

Wenn expr größer oder gleich min und expr kleiner oder gleich max ist, dann ist der Rückgabewert von BETWEEN 1 oder 0. Wenn alle Parameter vom gleichen Typ sind, entspricht die obige Beziehung dem Ausdruck (min 545f671aaf799fc3a5bd2ecf0bfb321d SELECT 1 BETWEEN 2 AND 3;

-> 0

SELECT 'b' BETWEEN 'a' AND 'c';

-> 1

SELECT 2 BETWEEN 2 AND '3';

-> SELECT 2 BETWEEN 2 AND 'x-3 ';

-> 0

expr NOT BETWEEN min AND max

Dies entspricht NOT(expr BETWEEN min AND max).

· COALESCE(value,...)

Der Rückgabewert ist der erste Nicht-NULL-Wert in der Liste. Wenn es keinen Nicht-NULL-Wert gibt, ist der Rückgabewert NULL.

mysql> SELECT COALESCE(NULL,1);

-> 1

mysql> SELECT COALESCE(NULL,NULL);

-> NULL

· GREATEST(value1,value2,...)

Wenn 2 oder mehr Parameter vorhanden sind, ist der Rückgabewert der größte (Maximalwert) Parameter. Die Regeln zum Vergleichen von Parametern sind dieselben wie für LEAST().

mysql> SELECT GREATEST(2,0);

-> 2

mysql> SELECT GREATEST(34.0,3.0,5.0,767.0);

-> 767.0

MYSQL> SELECT GREATEST('B','A','C');

-> 'C'

in Keine Wenn das Argument NULL ist, ist der Rückgabewert von GREATEST() NULL.

· expr IN (Wert,...)

Wenn expr ein beliebiger Wert in der IN-Liste ist, ist der Rückgabewert 1, andernfalls ist der Rückgabewert 0. Wenn alle Werte Konstanten sind, basieren ihre Berechnung und Klassifizierung auf der Art des Ausdrucks. Derzeit wird die binäre Suche zur Suche nach Informationen verwendet. Wenn die IN-Werteliste ausschließlich aus Konstanten besteht, bedeutet dies, dass IN sehr schnell ist. Wenn expr ein Zeichenfolgenausdruck ist, bei dem die Groß-/Kleinschreibung beachtet wird, werden auch Zeichenfolgenvergleiche unter Berücksichtigung der Groß-/Kleinschreibung durchgeführt.

mysql> SELECT 2 IN (0,3,5,'wefwf');

-> 0

mysql> SELECT 'wefwf' IN (0,3 ,5,'wefwf');

-> 1

IN Die Anzahl der in der Liste aufgeführten Werte ist nur durch den max_allowed_packet-Wert begrenzt.

Um mit dem SQL-Standard konsistent zu sein, ist der Rückgabewert von IN All, wenn der Ausdruck auf der linken Seite NULL ist, keine Übereinstimmung in der Tabelle gefunden werden kann oder ein Ausdruck in der Tabelle NULL ist sind NULL. Das Konstrukt

IN() kann auch zum Schreiben bestimmter Arten von Unterabfragen verwendet werden.

· expr NOT IN (Wert,...)

Dies ist dasselbe wie NOT (expr IN (Wert,...)).

ISNULL(expr)

Wenn expr NULL ist, dann ist der Rückgabewert von ISNULL() 1, andernfalls ist der Rückgabewert 0.

mysql> SELECT ISNULL(1 1);

-> 0

SELECT ISNULL(1/0);

-> >

Der Vergleich von NULL-Werten mit = ist normalerweise ein Fehler.

Die Funktion ISNULL() hat einige der gleichen Eigenschaften wie der Vergleichsoperator IS NULL. Siehe den Hinweis zu IS NULL .

· INTERVAL(N,N1,N2,N3,...)

Wenn N 48047b5bdfa85a8e32517975d649e149 SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);

-> 3

mysql> );

-> 2

MYSQL> SELECT INTERVAL(22, 23, 30, 44, 200);

-> · LEAST(value1,value2,...)

Bei zwei oder mehr Parametern ist der Rückgabewert der kleinste (Minimalwert) Parameter. Verwenden Sie die folgenden Regeln, um Argumente zu vergleichen:

Wenn der Rückgabewert in einem INTEGER-Kontext verwendet wird oder wenn alle Parameter Ganzzahlwerte sind, werden sie als Ganzzahlwerte verglichen.

Wenn der Rückgabewert in einem REAL-Kontext verwendet wird oder alle Parameter reellwertig sind, wird er als reellwertiger Wert verglichen.

Wenn es sich bei einem Parameter um eine Zeichenfolge handelt, bei der die Groß-/Kleinschreibung beachtet wird, werden die Parameter entsprechend der Zeichenfolge, bei der die Groß-/Kleinschreibung beachtet wird, verglichen.

In anderen Fällen werden Argumente als Zeichenfolgen verglichen, bei denen die Groß-/Kleinschreibung beachtet wird.

Wenn eine unabhängige Variable NULL ist, ist der Rückgabewert von LEAST() NULL.

mysql> SELECT LEAST(2,0);

-> 0

MYSql> SELECT LEAST(34.0,3.0,5.0,767.0);

-> 3.0

MYSQL> Die oben genannten Konvertierungsregeln führen in einigen Grenzen zu seltsamen Ergebnissen:

mysql & gt; ein ganzzahliger Kontext. Die Ganzzahldarstellung trägt nicht dazu bei, numerische Werte beizubehalten, daher enthält sie eine vorzeichenbehaftete Ganzzahl.

4. Logische Operatoren

In SQL sind die Auswertungsergebnisse aller logischen Operatoren WAHR, FALSCH oder NULL (UNBEKANNT). In MySQL werden sie als 1 (TRUE), 0 (FALSE) und NULL dargestellt. Die meisten davon sind für verschiedene Datenbank-SQLs gleich, einige Server können jedoch einen beliebigen Wert ungleich Null für TRUE zurückgeben.

NICHT !

Logisches NICHT. Wenn der Operand 0 ist, ist der zurückgegebene Wert 1; wenn der Operand ungleich Null ist, ist der zurückgegebene Wert 0, und wenn der Operand NICHT NULL ist, ist der zurückgegebene Wert NULL.

SELECT NOT 10;

-> 0

SELECT NOT 0;

mysql> SELECT NOT NULL;

MYSql> 1 1;

-> 1

Das letzte Beispiel erzeugt ein Ergebnis von 1, da der Ausdruck auf die gleiche Weise wie (!1) 1 ausgewertet wird.

AND &&

Logisches UND. Wenn alle Operanden ungleich Null und nicht NULL sind, ist das berechnete Ergebnis 1. Wenn einer oder mehrere Operanden 0 sind, ist das Ergebnis 0. In anderen Fällen ist der Rückgabewert NULL.

MySQL> SELECT 1 && 1;

-> 1

MYSQL> SELECT 1 && 0;

MySQL> SELECT 1 && NULL;

-> SELECT 0 && NULL;

MySQL> SELECT NULL && 0;

-> 0

OR ||

Logisches ODER. Wenn beide Operanden ungleich NULL sind und einer der Operanden ungleich Null ist, ist das Ergebnis 1, andernfalls ist das Ergebnis 0. Wenn ein Operand NULL ist und der andere Operand ungleich Null ist, ist das Ergebnis 1, andernfalls ist das Ergebnis NULL. Wenn beide Operanden NULL sind, ist das Ergebnis NULL.

MYSQL> 1;

-> 0;

-> >

MySQL> 0;

MYSQL> SELECT 0 || 🎜>mysql> SELECT 1 ||. NULL;

->

Logisches XOR. Wenn ein Operand NULL ist, ist der Rückgabewert NULL. Bei Nicht-NULL-Operanden ist das berechnete Ergebnis 1, wenn ein ungerader Operand ungleich Null ist, andernfalls ist es 0.

mysql> SELECT 1 XOR 1;

-> 0

MYSql> SELECT 1 ; NULL

mysql> Die Berechnung eines XOR b entspricht (a AND (NOT b)) OR ((NOT a) AND b).

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn