我需要在MySQL中存储二进制数据,例如1110000
。当我选择它时,我需要将返回值再次设为1110000
。
我应该使用哪种数据类型?我可以用一下吗?或者varbinary会更好吗?
答案 0 :(得分:9)
如果你正在处理二进制数字,你可以使用bit field,例如:
bit(64)
是一个位字段,最多有64位有效位(允许的最大大小)。
要插入常量值,您可以使用b'value'表示法,如下所示:
insert into bits values (b'0001001101001');
只需添加0或使用cast()即可将位字段转换为数字。还有方便的bin(),hex()和oct()函数来打印特定基数中的值。
如果非数字,varbinary或blob将是最有效的存储方法。二进制也是可用的(它将使用零字节来填充较短的值)。
如果您不想处理转换,可以将字符串存储在varchar或char中。它只会占用紧凑型varbinary的8倍空间。
要从您的应用程序插入/读取,您需要将序列转换为压缩字节数组,然后将压缩字符串存储在varbinary列中。在C#中你可能会使用BitConverter。在php中你可以使用pack / unpack。
答案 1 :(得分:1)
希望,此代码可以帮助您:
:
select conv(column_name, from_base, to_base) from table_name
//example:
select conv(column1, 10, 2) from table1;
插入:
insert into table_name(column1) values( B'binary_data') ;
//example :
insert into table1(column1) values( B'1110000');
查询:
select column1,column2 from table_name where column1 & B('binary_data');
//example:
select column1, column2 from table1 where column1 & B('1110000');