我正在尝试在MySQL中构建一个查询,它连接了一堆二进制字段,然后将结果作为DECIMAL提供给我。
e.g:
SELECT CONCAT (setting1, setting2, setting3) AS settings;
可能会给我:
101
111
110
我想将此值传递给函数(convert?cast?),它将为我提供相应的DECIMAL值:
5
7
6
我已经尝试过cast()
和convert()
的几种组合,但还没有破解它。
答案 0 :(得分:2)
CONV(BINARY(CONCAT(setting1,setting2)),2,10)
答案 1 :(得分:1)
没试过,但试试吧。
首先,你的输入让我们说是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(dec为十六进制),然后我们将十六进制转换为bin。
当选择时,我们做BIN到HEX,HEX到BIN
实际上,你可以做CONV(6, 10, 2)
,反之亦然。
答案 2 :(得分:0)
您可以尝试以二进制
进行幂数学运算 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;
将返回setting2的值。