转换二进制使用MySQL为十进制(Convert a binary to decimal using

2019-09-18 03:18发布

我试图构建的MySQL是串接一串二进制字段的查询,然后给我的结果是十进制数。

例如:

SELECT CONCAT (setting1, setting2, setting3) AS settings;

5月给我:

101
111
110

我想这个值传递给函数(转换投?),这将使我对应的十进制值:

5
7
6

我已经尝试过的几个组合cast()convert() ,但没有破解它。

Answer 1:

CONV(BINARY(CONCAT(设置1,设置2)),2,10)



Answer 2:

没有尝试,但尝试。

首先,你的输入假设为6。

INSERT INTO Table (FieldTest) VALUES (UNHEX(CONV(6, 10, 16)))
SELECT CONV(HEX(UNHEX(6)), 16, 10)

有现场

SELECT CONV(HEX(FieldTest), 16, 10))

UNHEX从十六进制数据转换为二进制。

CONV将从一个基站到另一转换数据。

这里变换基10至16(十进制为十六进制),然后我们做十六进制箱。

什么时候来选择,我们做的BIN为十六进制,HEX到BIN

在现实中,你可以只是做CONV(6, 10, 2)在读取时相反。



Answer 3:

你可以尝试在做二进制数学动力

SELECT setting1 * 4 + setting2 * 2 + setting3 * 1 AS settings;

但它的意思是做

SELECT setting1 * POW(2, 2) + setting2 * POW(2, 1) + setting3 * POW(2, 0) AS settings;

2 ^ 0代表最右边的位

2 ^ 1是第二,等等...

在未来,如果你有MySQL的二进制列,它可能是更容易将它们组合成一个[留在列的注释记住顺序]

您将数据添加到数据库中像

INSERT INTO settings (setting) VALUES (setting1 * 4 + setting2 * 2 + setting1 * 1);

和拉的单独一个不与SELECT setting & 2 FROM settings; 将返回设置2的值。

考虑按位函数 。



文章来源: Convert a binary to decimal using MySQL