想用mysql命令行插入blob数据,但是总在00处截断,  
比如0xCCDD00CCDD插入到数据库中就只有0xCCDD了。  
我应该如何插入该数据呢?  
另外,如上在终端select出来的blob数据默认就转成了字符"梯",  
我想看到二进制内容又该如何做呢?  
 
---------------------------------------------------------------  
如果你想要把二进制数据插入到一个BLOB列,下列字符必须由转义序列表示:          
   
NUL          
ASCII    0。你应该用'\0'(一个反斜线和一个ASCII    '0')表示它。          
\          
ASCII    92,反斜线。用'\\'表示。      
'          
ASCII    39,单引号。用“\'”表示。          
"          
ASCII    34,双引号。用“\"”表示。  
 
详细内容可以查看  
MySQL的转义字符“\”  
http://www.csdn.net/develop/read_article.asp?id=15635  
 
---------------------------------------------------------------  
如果你想插入一个十六进制数0xCCDD00CCDD  
update  tbl_name  set  blob_column=0xCCDD00CCDD;  
是完全可以的,  
 
如果想以  
update  tbl_name  set  blob_column='CCDD\0CCDD';  
方式,  
必须使用  
update  sql  set  sql  =  '梯\0梯'  
 
因为0xCCDD  是汉字“梯”  
而\0为转义  00  
 
---------------------------------------------------------------  
 
mysql>  UPDATE  tbl_name  
                     SET  blob_column=LOAD_FILE("/tmp/picture")  
                     WHERE  id=1;  
 
运行  LOAD_FILE  的要求:  
1:  
文件必须在服务器上,  
2:  
引用时必须用完全路径  
3:  
你必须有  FILE  权限  
4:  
读取的文件大小必须小于  max_allowed_packet  
 
你可以使用    MySQL-Front  来查看所插入的数据

解决方案 »

  1.   

    呵呵,
    是的,
    如果用第一种办法必须将NUL          
    ASCII    0。你应该用'\0'(一个反斜线和一个ASCII    '0')表示它。          
    \          
    ASCII    92,反斜线。用'\\'表示。      
    '          
    ASCII    39,单引号。用“\'”表示。          
    "          
    ASCII    34,双引号。用“\"”表示。 字符替换了