翻译:如果UNHEX()的参数是BINARY列,则可能会出现NULL结果,因为在存储时会使用0x00字节填充值,但这些字节在检索时不会被剥离。 例如,'aa'作为'aa'存储在CHAR(3)列中,并作为'aa'检索(尾随填充空间被剥离),因此列值的UNHEX()返回'A'。 相比之下,'aa'作为'aa \ 0'存储在BINARY(3)列中,并作为'aa \ 0'检索(尾随填充0x00字节未被剥离)。 '\ 0'不是合法的十六进制数字,因此列值的UNHEX()返回NULL。
综上,简单点理解就是
导出时采用HEX函数读取数据,把二进制的数据转为16进制的字符串;
select HEX(binField) from testTable;
//查询出来的数据是一串可以展示的字符串,可以导出为sql语句,
//但是要恢复,要是用其逆转函数UNHEX将数据格式化导入
//导入时采用UNHEX函数,把16进制的字符串转为二进制的数据导入库中;
insert into testTable binField values(UNHEX(@hexstr));
//这样格式化后,可以完整的将数据导进去。