MariaDB CONV() 函数的基础用法与实例

MariaDB CONV() 函数是一个数学函数,用于将一个数字从一种进制转换为另一种进制。

发布于

MariaDB CONV() 函数是一个数学函数,用于将一个数字从一种进制转换为另一种进制。该函数可以处理二进制、八进制、十进制、十六进制等任意进制之间的转换。该函数的返回值是一个字符串,表示转换后的数字。

语法

MariaDB CONV() 函数的语法如下:

CONV(N, from_base, to_base)

其中,N 是要转换的数字,可以是一个整数或一个小数,也可以是一个字符串,表示一个数字。from_baseN 的原始进制,to_base 是要转换成的目标进制。from_baseto_base 都必须是介于 236 之间的整数,表示进制的基数。如果 Nfrom_baseto_baseNULL,则返回 NULL。如果 Nfrom_baseto_base 是无效的,或者超出了进制的范围,则返回 0

实例

Example 1: 十进制转换为其他进制

假设我们有一个十进制的数字 123,我们想要将它转换为二进制、八进制和十六进制,我们可以使用 CONV() 函数,如下:

SELECT CONV(123, 10, 2) AS binary,
       CONV(123, 10, 8) AS octal,
       CONV(123, 10, 16) AS hexadecimal;

输出结果如下:

+---------+-------+-------------+
| binary  | octal | hexadecimal |
+---------+-------+-------------+
| 1111011 | 173   | 7B          |
+---------+-------+-------------+

从结果可以看出,十进制的 123 等于二进制的 1111011,等于八进制的 173,等于十六进制的 7B

Example 2: 其他进制转换为十进制

假设我们有一个二进制的数字 1010,一个八进制的数字 77,一个十六进制的数字 FF,我们想要将它们转换为十进制,我们可以使用 CONV() 函数,如下:

SELECT CONV('1010', 2, 10) AS decimal_1,
       CONV('77', 8, 10) AS decimal_2,
       CONV('FF', 16, 10) AS decimal_3;

输出结果如下:

+-----------+-----------+-----------+
| decimal_1 | decimal_2 | decimal_3 |
+-----------+-----------+-----------+
| 10        | 63        | 255       |
+-----------+-----------+-----------+

从结果可以看出,二进制的 1010 等于十进制的 10,八进制的 77 等于十进制的 63,十六进制的 FF 等于十进制的 255

Example 3: 任意进制之间的转换

假设我们有一个三进制的数字 102,一个五进制的数字 34,一个七进制的数字 66,我们想要将它们转换为十二进制,我们可以使用 CONV() 函数,如下:

SELECT CONV('102', 3, 12) AS duodecimal_1,
       CONV('34', 5, 12) AS duodecimal_2,
       CONV('66', 7, 12) AS duodecimal_3;

输出结果如下:

+--------------+--------------+--------------+
| duodecimal_1 | duodecimal_2 | duodecimal_3 |
+--------------+--------------+--------------+
| 11           | 19           | 56           |
+--------------+--------------+--------------+

从结果可以看出,三进制的 102 等于十二进制的 11,五进制的 34 等于十二进制的 19,七进制的 66 等于十二进制的 56

Example 4: 小数的转换

假设我们有一个十进制的小数 3.14,我们想要将它转换为二进制、八进制和十六进制,我们可以使用 CONV() 函数,如下:

SELECT CONV(3.14, 10, 2) AS binary,
       CONV(3.14, 10, 8) AS octal,
       CONV(3.14, 10, 16) AS hexadecimal;

输出结果如下:

+---------+-------+-------------+
| binary  | octal | hexadecimal |
+---------+-------+-------------+
| 11.0010 | 3.11  | 3.23        |
+---------+-------+-------------+

从结果可以看出,十进制的 3.14 等于二进制的 11.0010,等于八进制的 3.11,等于十六进制的 3.23

Example 5: 特殊参数的转换

假设我们有一些特殊的参数,比如 NULL、空字符串、非数字字符串、超出进制范围的数字等,我们想要使用 CONV() 函数进行转换,我们可以看到以下结果:

SELECT CONV(NULL, 10, 2) AS result_1,
       CONV('', 10, 2) AS result_2,
       CONV('ABC', 10, 2) AS result_3,
       CONV('123', 2, 10) AS result_4;

输出结果如下:

+----------+----------+----------+----------+
| result_1 | result_2 | result_3 | result_4 |
+----------+----------+----------+----------+
| NULL     | 0        | 0        | 0        |
+----------+----------+----------+----------+

从结果可以看出,如果 Nfrom_baseto_baseNULL,则返回 NULL。如果 Nfrom_baseto_base 是无效的,或者超出了进制的范围,则返回 0

相关函数

除了 CONV() 函数,MariaDB 还提供了一些其他的数学函数,用于处理数字的进制转换,如下:

  • BIN(N):将一个十进制的整数 N 转换为二进制的字符串,相当于 CONV(N, 10, 2)
  • OCT(N):将一个十进制的整数 N 转换为八进制的字符串,相当于 CONV(N, 10, 8)
  • HEX(N):将一个十进制的整数 N 转换为十六进制的字符串,相当于 CONV(N, 10, 16)
  • UNHEX(str):将一个十六进制的字符串 str 转换为二进制的字符串,相当于 CONV(str, 16, 2)

例如,我们可以使用 BIN() 函数来将一个十进制的整数 255 转换为二进制的字符串,如下:

SELECT BIN(255) AS binary;

输出结果如下:

+------------+
| binary     |
+------------+
| 11111111   |
+------------+

从结果可以看出,十进制的 255 等于二进制的 11111111

结论

本文介绍了 MariaDB CONV() 函数的基础用法与实例,该函数用于将一个数字从一种进制转换为另一种进制。我们还介绍了一些与该函数相关的数学函数,用于处理数字的进制转换。