我需要在MySQL中存储二进制数据,例如1110000
。当我选择它时,我需要返回值仍然是相同的1110000
。
我应该使用哪种数据类型?可以使用bit吗?还是varbinary更好?
我需要在MySQL中存储二进制数据,例如1110000
。当我选择它时,我需要返回值仍然是相同的1110000
。
我应该使用哪种数据类型?可以使用bit吗?还是varbinary更好?
处理二进制数时,您可以使用位字段,例如:
bit(64)
这是一个最多具有64个有效比特(允许的最大尺寸)的位域。
为了插入常量值,您可以使用 b'值' 的表示方法,如下所示:
insert into bits values (b'0001001101001');
您可以通过添加0或使用cast()来将位域转换为数字。此外,还有方便的bin()、hex()和oct()函数可打印特定进制下的值。如果非数值类型,varbinary或blob是最有效的存储方法,binary也可用(它会使用空字节填充较短的值)。如果您不想处理转换,可以将字符串存储在varchar或char中。它只会使用紧凑varbinary的约8倍空间。要从应用程序中插入/读取,您需要将序列转换为打包的字节数组,然后将打包的字符串存储在varbinary列中。在C#中,您可以使用BitConverter,在php中,您可以使用pack/unpack。db_test
.t_bits
(val
)
VALUES (b '0001001101001');然后执行以下操作:
SELECT val+0 FROM t_bits
,它返回617
SELECT cast(val as unsigned) FROM t_bits
也返回617
SELECT cast(val as binary) FROM t_bits
,它返回'i'
SELECT bin(val) FROM t_bits
,它返回'1001101001'我想要的返回值与插入的值相同。'0001001101001'如何在blob中实现?我不明白。我很困惑..非常感谢。 - putse选择:
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');