In MariaDB CONVERT()
ist eine eingebaute Funktion, die einen Wert in einen anderen Datentyp konvertiert. Es nimmt einen Wert eines Typs an und gibt einen Wert des angegebenen Typs zurück.
Sie geben den Wert als Argument an, wenn Sie die Funktion aufrufen, sowie den Typ, in den Sie ihn konvertieren möchten.
CONVERT()
ist ähnlich wie CAST()
.
Syntax
Das CONVERT()
Funktion kann mit ODBC-Syntax oder SQL92-Syntax aufgerufen werden.
ODBC-Syntax:
CONVERT(expr, type)
SQL92-Syntax:
CONVERT(expr USING charset)
Wobei expr
ist der zu konvertierende Wert, type
ist der Datentyp, in den Sie konvertieren möchten.
Unter Verwendung der SQL92-Syntax charset
ist der Zeichensatz, in den Sie ihn konvertieren möchten.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT CONVERT(123.45, INT);
Ergebnis:
+----------------------+| CONVERT(123.45, INT) |+----------------------+| 123 |+----------------------+
Dadurch wurde der Wert in eine Ganzzahl umgewandelt, wodurch die Dezimalstellen entfernt wurden.
Hier ist ein weiteres Beispiel:
SELECT CONVERT('2020-01-01', DATETIME);
Ergebnis:
+---------------------------------+| CONVERT('2020-01-01', DATETIME) |+----------------------------------------------+| 01.01.2020 00:00:00 |+---------------------------------------------+
In diesem Fall haben wir einen String in einen DATETIME
umgewandelt Datentyp.
Konvertierungsfehler
Im vorherigen Beispiel haben wir ein gültiges DATE
angegeben Zeichenfolge (oder DATE
wörtlich). Daher konnte MariaDB den Wert in ein DATETIME
umwandeln Datentyp.
Folgendes passiert jedoch, wenn wir ein ungültiges DATE
angeben Zeichenkette:
SELECT CONVERT('1 Jan, 2020', DATE);
Ergebnis:
+------------------------------+| CONVERT('1 Jan, 2020', DATE) |+------------------------------+| NULL |+------------------------------+
Hier konnte MariaDB nicht herausfinden, wie dieser Wert konvertiert werden sollte, und gab NULL
zurück .
In diesem Fall könnten wir eine andere Funktion wie STR_TO_DATE()
verwenden um eine solche Konvertierung durchzuführen:
SELECT STR_TO_DATE('1 Jan, 2020', '%e %M, %Y');
Ergebnis:
+------------------------------------+| STR_TO_DATE('1 Jan, 2020', '%e %M, %Y') |+------------------------ -------------+| 01.01.2020 |+------------------------------------+
Geben Sie einen Zeichensatz an
Die SQL92-Syntax ermöglicht es uns, einen Zeichensatz anzugeben, in den konvertiert werden soll.
Beispiel:
SELECT CONVERT('ไม้เมือง' USING tis620);
Ergebnis:
Durch das Ändern des Zeichensatzes wird auch die Sortierung in die Standardsortierung für diesen Zeichensatz geändert.
Das obige Beispiel zeigt nicht wirklich, wie sich der Zeichensatz/die Sortierung geändert hat.
Glücklicherweise können wir Funktionen wie CHARSET()
verwenden und COLLATION()
um zu sehen, wie sich der Zeichensatz und die Sortierung geändert haben:
SELECT
CHARSET('ไม้เมือง') AS a,
COLLATION('ไม้เมือง') AS b,
CHARSET(CONVERT('ไม้เมือง' USING tis620)) AS c,
COLLATION(CONVERT('ไม้เมือง' USING tis620)) AS d;
Ergebnis:
+------+----------------+--------+------------ ----+| ein | b | c | d |+------+----------------+--------+------------- ---+| utf8 | utf8_general_ci | tis620 | tis620_thai_ci |+------+-----------------+--------+------------- ---+
Der erste verwendet den Zeichensatz und die Sortierung für meine Verbindung. Der zweite verwendet den Zeichensatz, den wir explizit mit CONVERT()
angegeben haben , sowie die Standardsortierung für diesen Zeichensatz.
Sehen Sie sich diese Liste der in MariaDB verfügbaren Sortierungen an, um eine vollständige Liste der Sortierungen und ihrer übereinstimmenden Zeichensätze zu erhalten.
Null-Argumente
Versuch, null
zu konvertieren gibt null
zurück :
SELECT CONVERT(null, DATETIME);
Ergebnis:
+-------------------------+| CONVERT(null, DATETIME) |+-------------------------+| NULL |+-------------------------+
Allerdings wird null
übergeben ohne Angabe des neuen Datentyps führt zu einem Syntaxfehler:
SELECT CONVERT(null);
Ergebnis:
ERROR 1064 (42000):Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax, um sie in der Nähe von ')' in Zeile 1 zu verwenden
Fehlendes Argument
Aufruf von CONVERT()
ohne Übergabe eines Arguments führt zu einem Syntaxfehler:
SELECT CONVERT();
Ergebnis:
ERROR 1064 (42000):Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax, um sie in der Nähe von ')' in Zeile 1 zu verwenden