美文网首页
mysql二进制数据存储处理binary和varbinary使用

mysql二进制数据存储处理binary和varbinary使用

作者: 哆啦在这A梦在哪 | 来源:发表于2020-04-02 10:43 被阅读0次

    mysql中varbinary、binary、char、varchar异同

    类型比较

    @@binary 与 varbinary 类型、char与varchar类型是相似的,只是他们存储的是二进制数据,也就是说他们是包含字节流而不是字符流,他们有二进制字符的集合和顺序,他们的对比,排序是基于字节的数值进行的

    长度比较

    @@binary与varbinary的最大长度、char与varchar是一样的,只不过他们是定义字节长度,而char和varchar对应的是字符长度。

    数据存储

    binary(N)存储二进制字符串,插入进,少于N个字节的会自动在尾部加0x00,取出时,所有的字节都保留,返回定义长度的字节长度,在比较的时候,所有的字节都是有效的,并且0x00<space (space对应的是0x20)

    varbinary在插入不会去填补0x00字节,查询的时候也不会丢弃任何字节,在比较的时候,所有的字节都是有效的,并且0x00<space (space对应的是0x20)

    使用差异

    这里在使用的时候,就会有明显的差距。相同存储一段二进制数组([]byte)

    [240 41 103 62 114 118 78 87 233 129 102 85 14 66 42 209 65 136 122 5 90 118 6 168 6 250 77 45 196 126 181 132]
    

    binary类型取出:

    [240 41 103 62 114 118 78 87 233 129 102 85 14 66 42 209 65 136 122 5 90 118 6 168 6 250 77 45 196 126 181 
    132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
    

    注意,注意,注意 由于会自动末尾填充0x00,所以这里会多18位的0.

    varbinary类型取出:

    [240 41 103 62 114 118 78 87 233 129 102 85 14 66 42 209 65 136 122 5 90 118 6 168 6 250 77 45 196 126 181 132] 
    

    原来一样,这里使用的的时候,类型需要酌情处理
    存储和取出时对尾部空格的处理

    char(N)用来存储非二进制字符串,插入时,对于少于N个字符的会自动在尾部加空格,查询时,尾部的空格就会被丢弃掉

    vachar(N) 用来存储非二进制字符串,插入时,对于少于N个字符的不填补空格,查询时,尾部的空格不会被丢弃掉

    相关文章

      网友评论

          本文标题:mysql二进制数据存储处理binary和varbinary使用

          本文链接:https://www.haomeiwen.com/subject/zfwtphtx.html