Wenn ein Operator mit Operanden verschiedener Typen verwendet wird, findet eine Typenkonvertierung statt, um die Operanden kompatibel zu machen. Einige Konvertierungen treten implizit auf. So wandelt MySQL beispielsweise Zahlen nach Bedarf in Strings um und umgekehrt.
mysql>SELECT 1+'1';-> 2 mysql>SELECT CONCAT(2,' test');-> '2 test'
        Es ist auch möglich, explizite Konvertierungen durchzuführen.
        Wenn Sie eine Zahl explizit in einen String umwandeln wollen,
        verwenden Sie die Funktionen CAST() oder
        CONCAT() (wobei CAST()
        vorzuziehen ist):
      
mysql>SELECT 38.8, CAST(38.8 AS CHAR);-> 38.8, '38.8' mysql>SELECT 38.8, CONCAT(38.8);-> 38.8, '38.8'
Die folgenden Regeln beschreiben, wie die Konvertierung bei Vergleichsoperationen erfolgt:
            Wenn eines der Argumente (oder beide)
            NULL ist, dann ist das Vergleichsergebnis
            NULL. Eine Ausnahme ist der
            NULL-sichere Gleichheitsoperator
            <=>. Bei NULL <=>
            NULL ist das Ergebnis wahr.
          
Wenn beide Argumente in einer Vergleichsoperation Strings sind, werden sie als Strings verglichen.
Sind beide Argumente Integers, dann werden sie als Integers verglichen.
Hexadezimalwerte werden als binäre Strings behandelt, wenn sie nicht mit einer Zahl verglichen werden.
            
            
            Wenn eines der Argumente eine TIMESTAMP-
            oder DATETIME-Spalte und das andere
            Argument eine Konstante ist, dann wird die Konstante vor
            Durchführung des Vergleichs in einen Zeitstempel
            umgewandelt. Dies erhöht die ODBC-Kompatibilität. Beachten
            Sie jedoch, dass dies nicht bei Argumenten für
            IN() gemacht wird! Um ganz sicher zu
            sein, sollten Sie bei Vergleichen immer vollständige
            Strings für Datum und/oder Uhrzeit verwenden.
          
In allen anderen Fällen werden die Argumente als Fließkommazahlen (reale Zahlen) verglichen.
Die folgenden Beispiele veranschaulichen die Konvertierung von Strings in Zahlen für Vergleichsoperationen:
mysql>SELECT 1 > '6x';-> 0 mysql>SELECT 7 > '6x';-> 1 mysql>SELECT 0 > 'x6';-> 0 mysql>SELECT 0 = 'x6';-> 1
        Beachten Sie, dass, wenn Sie eine String-Spalte mit einer Zahl
        vergleichen, MySQL keinen Index für die Spalte verwenden kann,
        um den Wert schnell abzurufen. Ist
        str_col eine indizierte
        String-Spalte, dann kann der Index nicht verwendet werden, um
        für die folgende Anweisung eine Suche durchzuführen:
      
SELECT * FROMtbl_nameWHEREstr_col=1;
        Dies liegt daran, dass es viele verschiedene Strings gibt, die
        in den Wert 1 konvertiert werden:
        '1', ' 1',
        '1a', …
      
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

