MySQL CONV()函数的下限和上限

MySQL CONV()函数的下限和上限

MySQL的CONV()函数是用于将一个数值转换为指定进制的字符串。它接受两个参数,第一个参数是需要被转换的数值,第二个参数是指定的进制。如:CONV(10, 10, 2),将数字10转化为二进制。在MySQL中,CONV()函数的范围大小是固定的,不同的进制都有不同的上限和下限。那么,CONV()函数的下限和上限到底是多少呢?如果在CONV()函数中提供超出范围的基础数据,会发生什么?

阅读更多:MySQL 教程

进制范围

在MySQL中,CONV()函数将数字转换为不同进制的字符串。因为不同进制会占用不同的字符集,所以CONV()函数对数字的范围有一定的限制。下表显示了CONV()函数处理1到64位进制数字的最大值和最小值。

进制 下限 上限
2 -9223372036854775808 9223372036854775807
3 -3852123406821056 3852123406821055
4 -4611686018427387904 4611686018427387903
5 -1909826780886464 1909826780886463
6 -9223372036854775808 9223372036854775807
7 -1043562167964748288 1043562167964748287
8 -9223372036854775808 9223372036854775807
9 -1229782938247303441 1229782938247303440
10 -9223372036854775808 9223372036854775807
11 -80831535893814400 80831535893814399
12 -4611686018427387904 4611686018427387903
13 -55340232221128654848 55340232221128654847
14 -21334325115545600 21334325115545599
15 -9223372036854775808 9223372036854775807
16 -9223372036854775808 9223372036854775807
17 -104857600 104857599
18 -4722366482869645216 4722366482869645215
19 -207208861412425477 207208861412425476
20 -18446744073709551616 18446744073709551615
21 -67034689768136448 67034689768136447
22 -310738754734206464 310738754734206463
23 -1042913033777451008 1042913033777451007
24 -1729382256910270464 1729382256910270463
25 -5902958103587057664 5902958103587057663
26 -4318412080047719936 4318412080047719935
27 -18490852937907228160 18490852937907228159
28 -69793218571265664 69793218571265663
29 -37778931862957184 37778931862957183
30 -304888344611713792 304888344611713791
31 -112589990684262144 112589990684262143
32 -9223372036854775808 9223372036854775807
33 -68630377364883 68630377364882
34 -2884414135676224 2884414135676223
35 -1152921504606846976 1152921504606846975
36 -1208925819614629174706176 1208925819614629174706175

从表中可以看到,不同进制的上限和下限有很大的差别。最大值和最小值的差距会随着进制的增大而变大。因此,在使用CONV()函数时,必须格外小心,以确保提供的数字不超过所需进制的范围。

数据范围

通过上表,我们已经知道了CONV()函数可以处理不同进制下的最大值和最小值。但是如果提供的基础数据超出了范围,会发生什么呢?

我们看看下面这个例子:

SELECT CONV('99999999999999', 10, 16)

在这个例子中,我们尝试将一个超过16进制范围的数字转换为16进制,我们将得到如下错误信息:

ERROR 1690 (22003): BIGINT value is out of range in 'conv(99999999999999,10,16)'

这是因为在提供的数字是超出了16进制的数据范围。同样的,如果提供的数字超出了16进制、10进制或其他支持进制的下限和上限,则会收到类似的错误消息。

另一个例子:

SELECT CONV(-10, 10, 2)

这个例子中我们尝试将-10转换为二进制数,我们将得到如下错误信息:

ERROR 1690 (22003): BIGINT value is out of range in 'conv(-10,10,2)'

这是因为二进制不支持负数,因此-10超出了2进制的数据范围。

结论

CONV()函数具有下限和上限限制,它们与所需的进制有关。如果在CONV()函数中提供超出范围的数字,则会提示错误消息。因此,必须格外小心以确保提供的数据范围在所需进制的范围内。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程