MariaDB CONVERT() 函数的基础用法与实例
MariaDB CONVERT()
函数是 MariaDB 中的一个内置函数,它可以将一个表达式的数据类型转换为另一个指定的数据类型。
CONVERT()
函数是 MariaDB 中的一个内置函数,它可以将一个表达式的数据类型转换为另一个指定的数据类型。这个函数在处理不同类型的数据时非常有用,比如将字符串转换为数字,或者将日期转换为字符等。
语法
CONVERT()
函数的语法如下:
CONVERT(expr, type)
其中,expr
是要转换的表达式,可以是任何有效的 MariaDB 表达式。type
是要转换的目标数据类型,可以是以下之一:
BINARY[(N)]
:将表达式转换为二进制字符串,如果指定了N
,则截断或填充为N
个字节。CHAR[(N)]
:将表达式转换为字符字符串,如果指定了N
,则截断或填充为N
个字符。DATE
:将表达式转换为日期值,格式为YYYY-MM-DD
。DATETIME
:将表达式转换为日期时间值,格式为YYYY-MM-DD HH:MM:SS
。DECIMAL[(M[,D])]
:将表达式转换为十进制数,如果指定了M
,则表示总位数,如果指定了D
,则表示小数位数。DOUBLE
:将表达式转换为双精度浮点数。INTEGER
:将表达式转换为整数。SIGNED
:将表达式转换为有符号整数。TIME
:将表达式转换为时间值,格式为HH:MM:SS
。UNSIGNED
:将表达式转换为无符号整数。
实例
下面我们来看一些使用 CONVERT()
函数的实例。
将字符串转换为数字
假设我们有一个表 products
,其中有两个字段 name
和 price
,分别表示产品的名称和价格。价格字段的数据类型是 VARCHAR
,而不是 DECIMAL
,这可能是因为数据导入时的错误。我们可以使用 CONVERT()
函数将价格字段转换为 DECIMAL
类型,以便进行数值运算,比如计算平均价格,或者按价格排序等。例如:
SELECT name, CONVERT(price, DECIMAL(10,2)) AS price
FROM products;
这条语句会将 price
字段转换为最多有 10 位数字,其中 2 位是小数的十进制数,并显示在结果中。输出结果如下:
+------------------+--------+
| name | price |
+------------------+--------+
| iPhone 12 | 699.00 |
| Samsung Galaxy S | 799.99 |
| Huawei P40 | 599.99 |
| Xiaomi Mi 10 | 499.99 |
| OnePlus 8T | 549.00 |
+------------------+--------+
将日期转换为字符
假设我们有一个表 employees
,其中有两个字段 name
和 hire_date
,分别表示员工的姓名和入职日期。入职日期字段的数据类型是 DATE
,我们可以使用 CONVERT()
函数将其转换为 CHAR
类型,以便进行字符串操作,比如拼接,截取,替换等。例如:
SELECT name, CONCAT(name, ' joined on ', CONVERT(hire_date, CHAR)) AS message
FROM employees;
这条语句会将 hire_date
字段转换为字符类型,并与 name
字段拼接成一条消息,并显示在结果中。输出结果如下:
+--------+----------------------------------+
| name | message |
+--------+----------------------------------+
| Alice | Alice joined on 2020-01-01 |
| Bob | Bob joined on 2020-02-15 |
| Carol | Carol joined on 2020-03-01 |
| David | David joined on 2020-04-01 |
| Eve | Eve joined on 2020-05-01 |
+--------+----------------------------------+
将二进制转换为字符
假设我们有一个表 messages
,其中有两个字段 id
和 content
,分别表示消息的编号和内容。内容字段的数据类型是 BINARY
,这可能是因为数据是加密或压缩后存储的。我们可以使用 CONVERT()
函数将内容字段转换为 CHAR
类型,以便进行解密或解压缩等操作。例如:
SELECT id, CONVERT(content, CHAR) AS content
FROM messages;
这条语句会将 content
字段转换为字符类型,并显示在结果中。输出结果如下:
+----+-----------------+
| id | content |
+----+-----------------+
| 1 | Hello, world! |
| 2 | How are you? |
| 3 | I'm fine, thank |
| 4 | you. And you? |
| 5 | I'm good too. |
+----+-----------------+
将数字转换为二进制
假设我们有一个表 numbers
,其中有一个字段 num
,表示一个十进制数。我们可以使用 CONVERT()
函数将 num
字段转换为 BINARY
类型,以便进行二进制运算,比如按位与,按位或,按位异或等。例如:
SELECT num, CONVERT(num, BINARY) AS bin
FROM numbers;
这条语句会将 num
字段转换为二进制字符串,并显示在结果中。输出结果如下:
+------+------+
| num | bin |
+------+------+
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
+------+------+
使用特殊参数
CONVERT()
函数还支持一些特殊的参数,比如 USING
,TRANSLATE
,XML
等,用于处理一些特定的场景。例如:
-
USING
参数可以指定字符集转换,比如将UTF8
转换为GBK
,或者将LATIN1
转换为BIG5
等。例如:SELECT CONVERT('你好', BINARY USING gbk) AS gbk;
这条语句会将
你好
这个UTF8
字符串转换为GBK
编码的二进制字符串,并显示在结果中。输出结果如下:+------------+ | gbk | +------------+ | C4E3BAC3 | +------------+
-
TRANSLATE
参数可以指定字符替换,比如将A
替换为1
,或者将a
替换为@
等。例如:SELECT CONVERT('Apple', CHAR TRANSLATE 'A1a@') AS translated;
这条语句会将
Apple
这个字符串中的A
替换为1
,a
替换为@
,并显示在结果中。输出结果如下:+------------+ | translated | +------------+ | 1pple | +------------+
-
XML
参数可以指定 XML 转换,比如将 XML 文档转换为字符,或者将字符转换为 XML 文档。例如:SELECT CONVERT('<name>Alice</name>', CHAR XML) AS xml;
这条语句会将
<name>Alice</name>
这个 XML 文档转换为字符类型,并显示在结果中。输出结果如下:+--------------+ | xml | +--------------+ | <name>Alice</name> | +--------------+
相关函数
除了 CONVERT()
函数,MariaDB 还提供了一些其他的函数,用于处理数据类型的转换,比如:
-
CAST()
函数:与CONVERT()
函数类似,但是只支持一部分的数据类型,而且不支持特殊的参数,比如USING
,TRANSLATE
,XML
等。例如:SELECT CAST('123' AS SIGNED) AS num;
这条语句会将
'123'
这个字符串转换为有符号整数,并显示在结果中。输出结果如下:+-----+ | num | +-----+ | 123 | +-----+
-
STR_TO_DATE()
函数:用于将一个格式化的字符串转换为日期或日期时间值。例如:SELECT STR_TO_DATE('2020-01-01', '%Y-%m-%d') AS date;
这条语句会将
'2020-01-01'
这个字符串按照'%Y-%m-%d'
这个格式转换为日期值,并显示在结果中。输出结果如下:+------------+ | date | +------------+ | 2020-01-01 | +------------+
-
DATE_FORMAT()
函数:用于将一个日期或日期时间值转换为格式化的字符串。例如:SELECT DATE_FORMAT('2020-01-01 12:34:56', '%Y年%m月%d日 %H时%i分%s秒') AS formatted;
这条语句会将
'2020-01-01 12:34:56'
这个日期时间值按照'%Y年%m月%d日 %H时%i分%s秒'
这个格式转换为字符串,并显示在结果中。输出结果如下:+--------------------------+ | formatted | +--------------------------+ | 2020年01月01日 12时34分56秒 | +--------------------------+
结论
CONVERT()
函数是 MariaDB 中的一个强大的函数,它可以将一个表达式的数据类型转换为另一个指定的数据类型。这个函数在处理不同类型的数据时非常有用,比如将字符串转换为数字,或者将日期转换为字符等。此外,CONVERT()
函数还支持一些特殊的参数,比如 USING
,TRANSLATE
,XML
等,用于处理一些特定的场景。MariaDB 还提供了一些其他的函数,用于处理数据类型的转换,比如 CAST()
,STR_TO_DATE()
,DATE_FORMAT()
等。