Der Operator BINARY wandelt den ihm
          nachfolgenden String in einen Binär-String um. Dies ist eine
          einfache Möglichkeit, einen Spaltenvergleich byte- statt
          zeichenweise durchzuführen. Auf diese Weise unterscheidet der
          Vergleich die Groß-/Kleinschreibung auch dann, wenn die
          Spalte nicht als BINARY oder
          BLOB definiert ist.
          BINARY berücksichtigt auch am Ende
          stehende Leerzeichen.
        
mysql>SELECT 'a' = 'A';-> 1 mysql>SELECT BINARY 'a' = 'A';-> 0 mysql>SELECT 'a' = 'a ';-> 1 mysql>SELECT BINARY 'a' = 'a ';-> 0
          In einem Vergleich wirkt sich BINARY auf
          die gesamte Operation aus. Es kann vor einen beliebigen
          Operanden gesetzt werden – das Ergebnis bleibt stets das
          Gleiche.
        
          BINARY  ist
          eine Abkürzung für
          strCAST(.
        str AS
          BINARY)
          Beachten Sie, dass, wenn Sie in bestimmten Kontexten eine
          indizierte Spalte in BINARY umwandeln,
          MySQL den Index nicht mehr effizient verwenden kann.
        
          
          
          CAST(,
          expr AS
          type)CONVERT(,
          expr,type)CONVERT(
        expr USING
          transcoding_name)
          Die Funktionen CAST() und
          CONVERT() nehmen einen Wert eines Typs
          entgegen und erzeugen einen Wert eines anderen Typs.
        
          type kann einen der folgenden Werte
          haben:
        
              BINARY[(
            N)]
              CHAR[(
            N)]
              DATE
            
              DATETIME
            
              DECIMAL
            
              SIGNED [INTEGER]
            
              TIME
            
              UNSIGNED [INTEGER]
            
          BINARY erzeugt einen String des Datentyps
          BINARY. Eine Erläuterung, wie sich dies
          auf Vergleiche auswirkt, finden Sie in
          Abschnitt 11.4.2, „Die BINARY- und VARBINARY-Typen“. Wird die optionale Länge
          N angegeben, dann verwendet
          BINARY[ zur
          Umwandlung nicht mehr als N]N Bytes
          des Arguments. Werte, die kürzer als
          N Bytes sind, werden mit
          0x00-Bytes auf die Länge
          N aufgefüllt.
        
          Mit CHAR[
          werden bei der Umwandlung nicht mehr als
          N]N Zeichen des Arguments verwendet.
        
          CAST() und CONVERT(... USING
          ...) sind SQL-Standardsyntax. Die Form von
          CONVERT() ohne USING
          hingegen ist ODBC-Syntax.
        
          CONVERT() wird mit USING
          zur Konvertierung von Daten zwischen verschiedenen
          Zeichensätzen konvertiert. Bei MySQL sind die
          Transkodierungs- mit den entsprechenden Zeichensatznamen
          identisch. Die folgende Anweisung beispielsweise konvertiert
          den String 'abc' im Standardzeichensatz in
          den entsprechenden String im Zeichensatz
          utf8:
        
SELECT CONVERT('abc' USING utf8);
      Normalerweise können Sie einen BLOB-Wert oder
      einen anderen binären Wert nur mit Unterscheidung der
      Groß-/Kleinschreibung vergleichen, da Binär-Strings keinen
      Zeichensatz (und deswegen auch keine Groß-/Kleinschreibung)
      haben. Um einen Vergleich ohne Unterscheidung der
      Groß-/Kleinschreibung durchzuführen, konvertieren Sie den Wert
      mit der Funktion CONVERT() in einen
      nichtbinären String. Wenn der Zeichensatz des Ergebnisses eine
      Sortierung mit Unterscheidung der Groß-/Kleinschreibung hat, dann
      unterscheidet die LIKE-Operation die
      Groß-/Kleinschreibung nicht:
    
SELECT 'A' LIKE CONVERT(blob_colUSING latin1) FROMtbl_name;
      Um einen anderen Zeichensatz zu verwenden, ersetzen Sie
      latin1 in der obigen Anweisung durch dessen
      Namen. Wenn Sie gewährleisten wollen, dass eine Sortierung ohne
      Unterscheidung der Groß-/Kleinschreibung verwendet wird, geben
      Sie auf den Aufruf von CONVERT() folgend eine
      COLLATE-Klausel an.
    
      CONVERT() kann – allgemeiner gesagt – für
      den Vergleich von Strings verwendet werden, die in
      unterschiedlichen Zeichensätzen dargestellt werden.
    
      Die Umwandlungsfunktionen sind nützlich, um eine Spalte eines
      bestimmten Typs in einer CREATE ...
      SELECT-Anweisung zu erstellen:
    
CREATE TABLE new_table SELECT CAST('2000-01-01' AS DATE);
      Die Funktionen können auch praktisch sein, um
      ENUM-Spalten in lexikaler Reihenfolge zu
      sortieren. Normalerweise erfolgt die Sortierung von
      ENUM-Spalten unter Verwendung der internen
      numerischen Werte. Die Umwandlung der Werte in
      CHAR führt zu einer lexikalen Sortierung:
    
SELECTenum_colFROMtbl_nameORDER BY CAST(enum_colAS CHAR);
      CAST(
      ist das Gleiche wie str AS BINARY)BINARY
      .
      strCAST(
      behandelt den Ausdruck als String mit dem Standardzeichensatz.
    expr AS CHAR)
      CAST() ändert das Ergebnis auch, wenn Sie es
      als Teil eines komplexeren Ausdrucks wie etwa
      CONCAT('Date: ',CAST(NOW() AS DATE)) verwenden.
    
      Sie sollten CAST() nicht zur Extraktion von
      Daten in verschiedenen Formaten benutzen, sondern stattdessen
      String-Funktionen wie LEFT() oder
      EXTRACT() verwenden. Siehe auch
      Abschnitt 12.5, „Datums- und Zeitfunktionen“.
    
Um einen String in einem Zahlenkontext in einen numerischen Wert umzuwandeln, müssen Sie normalerweise nichts anderes tun, als den String-Wert wie eine Zahl zu verwenden:
mysql> SELECT 1+'1';
       -> 2
      Wenn Sie eine Zahl im String-Kontext verwenden, wird die Zahl
      automatisch in einen BINARY-String konvertiert.
    
mysql> SELECT CONCAT('hello you ',2);
        -> 'hello you 2'
      MySQL unterstützt Berechnungen mit vorzeichenbehafteten wie auch
      vorzeichenlosen 64-Bit-Werten. Wenn Sie numerische Operationen
      (wie +) verwenden und einer der Operanden ein
      vorzeichenloser Integer ist, dann ist auch das Ergebnis
      vorzeichenlos. Sie können dieses Verhalten außer Kraft setzen,
      indem Sie die Umwandlungsoperatoren SIGNED und
      UNSIGNED zur Umwandlung des Operanden in einen
      vorzeichenbehafteten bzw. vorzeichenlosen 64-Bit-Integer benutzen.
    
mysql>SELECT CAST(1-2 AS UNSIGNED)-> 18446744073709551615 mysql>SELECT CAST(CAST(1-2 AS UNSIGNED) AS SIGNED);-> -1
      Beachten Sie, dass, wenn ein Operand ein Fließkommawert ist, das
      Ergebnis ebenfalls ein Fließkommawert sein wird; die obige Regel
      findet in diesem Fall keine Anwendung. (In diesem Kontext werden
      DECIMAL-Spalten als Fließkommawerte
      betrachtet.)
    
mysql> SELECT CAST(1 AS UNSIGNED) - 2.0;
        -> -1.0
Wenn Sie in einer Rechenoperation einen String verwenden, dann wird dieser in eine Fließkommazahl umgewandelt.
      Konvertieren Sie einen „Nulldatums“-String in ein
      Datum, dann geben CONVERT() und
      CAST() NULL zurück und
      erzeugen bei aktiviertem SQL-Modus NO_ZERO_DATE
      außerdem eine Warnung.
    
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.

