MariaDB CONVERT() 函数使用指南
在 MariaDB 中,CONVERT()
是一个内置函数,它将任意类型的参数值转为指定的类型或者字符集。
MariaDB CONVERT()
语法
这里是 MariaDB CONVERT()
函数的语法:
CONVERT(expr, data_type)
或
CONVERT(expr USING charset)
CONVERT(expr, data_type)
等同于 CONVERT(expr, data_type)
。
参数
expr
- 必需的。 一个需要转换数据类型的值。
data_type
- 必需的。 目标数据类型。您可以使用下面的类型:
BINARY
CHAR
DATE
DATETIME
DECIMAL[(M[,D])]
DOUBLE
FLOAT
INTEGER
SIGNED [INTEGER]
UNSIGNED [INTEGER]
TIME
VARCHAR
charset
- 必需的。 要转换为的字符集。
返回值
MariaDB CONVERT()
函数将任意类型的参数值转为指定的类型或者字符集并返回。
MariaDB CONVERT()
示例
这里有几个 CONVERT()
的常用示例。
转为二进制
您可以是用 CONVERT()
函数将一个字符串转为二进制字符串。
SELECT CONVERT('hello', BINARY);
输出:
+--------------------------+
| CONVERT('hello', BINARY) |
+--------------------------+
| hello |
+--------------------------+
注意, 在 mysql client 中,二进制字符串默认以十六进制的形式打印出来。
您也可以使用 BINARY
操作符获取一个字符串的二进制字符串。如下:
SELECT BINARY 'hello';
输出:
+----------------+
| BINARY 'hello' |
+----------------+
| hello |
+----------------+
转为整数
您可以使用 CONVERT()
函数将浮点数转为整数。
SELECT
CONVERT(1.23, INT),
CONVERT('1.23', INT),
CONVERT('1.23A', INT);
输出:
+--------------------+----------------------+-----------------------+
| CONVERT(1.23, INT) | CONVERT('1.23', INT) | CONVERT('1.23A', INT) |
+--------------------+----------------------+-----------------------+
| 1 | 1 | 1 |
+--------------------+----------------------+-----------------------+
如果 MariaDB 不能将给定的值转为整数,MariaDB 将返回 0
。
SELECT CONVERT('abc', INT);
输出:
+---------------------+
| CONVERT('abc', INT) |
+---------------------+
| 0 |
+---------------------+
转为日期时间
您可以使用 CONVERT()
函数将使用字符串表示的日期/时间值转为 DATE, DATETIME 类型的数据。
SELECT
CONVERT('2023-02-28', DATE),
CONVERT('10:10:10', TIME),
CONVERT('2023-02-28 10:10:10', DATETIME);
输出:
+-----------------------------+---------------------------+------------------------------------------+
| CONVERT('2023-02-28', DATE) | CONVERT('10:10:10', TIME) | CONVERT('2023-02-28 10:10:10', DATETIME) |
+-----------------------------+---------------------------+------------------------------------------+
| 2023-02-28 | 10:10:10 | 2023-02-28 10:10:10 |
+-----------------------------+---------------------------+------------------------------------------+
如果 MariaDB 不能将给定的值转为日期/时间类型, MariaDB 将返回 NULL
。
SELECT CONVERT('ABC', DATE);
输出:
+----------------------+
| CONVERT('ABC', DATE) |
+----------------------+
| NULL |
+----------------------+
转换字符集
本示例将 Hello
的字符集改为 latin1
字符集:
SELECT CONVERT("Hello" USING latin1);
输出:
+-------------------------------+
| CONVERT("Hello" USING latin1) |
+-------------------------------+
| Hello |
+-------------------------------+
如果给定采用的字符集不能表示相应的字符串,则会出现乱码。比如:
SELECT
CONVERT("好" USING latin1),
CONVERT("好" USING utf8mb4);
输出:
+-----------------------------+------------------------------+
| CONVERT("好" USING latin1) | CONVERT("好" USING utf8mb4) |
+-----------------------------+------------------------------+
| ? | 好 |
+-----------------------------+------------------------------+
这里,由于这个字符 好
超出了 latin1
的范围,因此输出了乱码。而 utf8mb4
则正常输出。
结论
在 MariaDB 中,CONVERT()
是一个内置函数,它将任意类型的参数值转为指定的类型或者字符集。