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() 是一个内置函数,它将任意类型的参数值转为指定的类型或者字符集。