MySQL - CONV() 函数
表示和使用数字的技术称为数制。十进制是最常见的数制。其他常用的数制包括二进制、八进制、十六进制等。
MySQL 提供了一组函数来执行各种数值函数。MYSQL 的 CONV() 函数用于将给定值从一个数制转换为另一个数制,并以字符串形式返回结果。
此函数在不同进制之间转换数字。返回数字 N 的字符串表示形式,该数字 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;
输出
这将产生以下结果 -
Result |
---|
100101 |
示例
您也可以将要转换的数字作为字符串值传递 -
SELECT CONV('8E', 18, 2) As Result;
输出
上述查询的输出如下所示 -
Result |
---|
10011110 |
示例
如果传递的任何参数为空,此函数将返回 NULL 值 -
SELECT CONV('8E', 0, 2) As Result;
输出
这将产生以下结果 -
Result |
---|
NULL |
示例
如果传递给此函数的参数 from_base 为负值,则数字 (N) id 被视为有符号数字 -
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;
输出
这将产生以下结果 -
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 | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
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;
上述查询的输出如下所示 -
NAME | AGE | ADDRESS | SALARY | 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 |