我试图构建的MySQL是串接一串二进制字段的查询,然后给我的结果是十进制数。
例如:
SELECT CONCAT (setting1, setting2, setting3) AS settings;
5月给我:
101
111
110
我想这个值传递给函数(转换投?),这将使我对应的十进制值:
5
7
6
我已经尝试过的几个组合cast()
和convert()
,但没有破解它。
我试图构建的MySQL是串接一串二进制字段的查询,然后给我的结果是十进制数。
例如:
SELECT CONCAT (setting1, setting2, setting3) AS settings;
5月给我:
101
111
110
我想这个值传递给函数(转换投?),这将使我对应的十进制值:
5
7
6
我已经尝试过的几个组合cast()
和convert()
,但没有破解它。
CONV(BINARY(CONCAT(设置1,设置2)),2,10)
没有尝试,但尝试。
首先,你的输入假设为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)
在读取时相反。
你可以尝试在做二进制数学动力
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的值。
考虑按位函数 。