MySQL - CONV() 函数



表示和处理数字的技术称为数制。十进制数制是最常见的数制。其他流行的数制包括二进制数制、八进制数制、十六进制数制等。

MySQL 提供了一组函数来执行各种数值函数。MYSQL 的CONV() 函数用于将给定值从一个数制转换为另一个数制,并将结果以字符串形式返回。

此函数在不同进制之间转换数字。返回数字 N 的字符串表示形式,从 from_base 进制转换为 to_base 进制。如果任何参数为 NULL,则返回 NULL。参数 N 被解释为整数,但可以指定为整数或字符串。最小基数为 2,最大基数为 36。如果 from_base 为负数,则 N 被视为带符号数。否则,N 被视为无符号数。CONV() 使用 64 位精度。

语法

以下是 MySQL CONV() 函数的语法:

CONV(N, from_base, to_base)

参数

此函数接受 3 个参数,它们是:

  • N - 您需要转换的数字。

  • from_base - 给定数字的当前表示系统。

  • to_base - 您需要将给定数字转换到的表示系统。

返回值

此函数将转换为指定输出基数的数字作为字符串返回。

示例

以下是 CONV() 函数的示例,这里它将 25 从十六进制系统转换为二进制:

SELECT CONV(25, 16, 2) As Result;

输出

这将产生以下结果:

结果
100101

示例

您还可以将要转换的数字作为字符串值传递:

SELECT CONV('8E', 18, 2) As Result;

输出

上面查询的输出如下所示:

结果
10011110

示例

如果传递的任何参数为 null,则此函数返回 NULL 值:

SELECT CONV('8E', 0, 2) As Result;

输出

这将产生以下结果:

结果
NULL

示例

如果传递给此函数的参数from_base为负值,则数字 (N) 被视为带符号数:

SELECT CONV('7F', -16, 10) As Result;

输出

上面查询的输出如下所示:

4156456 * 56445
127

示例

对于 from_base 和 to_base 值,最小值和最大值分别为 2 和 36。如果给定值超出此范围,则CONV() 函数返回NULL

SELECT CONV('7F', 0, 10)  As Result;

输出

这将产生以下结果:

结果
NULL

示例

您还可以使用CONV() 函数将列的值从一个表示系统转换为另一个表示系统。为此,我们使用以下查询创建一个名为CUSTOMERS的表:

CREATE TABLE CUSTOMERS (
   ID INT AUTO_INCREMENT,
   NAME VARCHAR(20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

以下查询将 7 条记录插入到上面创建的表中:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES 
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );

执行以下查询以获取 CUSTOMERS 表中所有插入的记录:

Select * From CUSTOMERS;

以下是 CUSTOMERS 表:

ID 姓名 年龄 地址 薪资
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

现在,让我们使用CONV() 函数将 SALARY 列的值转换为二进制:

Select NAME,AGE,ADDRESS,SALARY, CONV(SALARY, 10, 2) 
FROM CUSTOMERS;

上面查询的输出如下所示:

姓名 年龄 地址 薪资 CONV(SALARY, 10, 2)
Ramesh 32 Ahmedabad 2000.00 11111010000
Khilan 25 Delhi 1500.00 10111011100
Kaushik 23 Kota 2000.00 11111010000
Chaitali 25 Mumbai 6500.00 1100101100100
Hardik 27 Bhopal 8500.00 10000100110100
Komal 22 Hyderabad 4500.00 1000110010100
Muffy 24 Indore 10000.00 10011100010000
广告