【问题标题】:Working with Binary Data in MySQL在 MySQL 中处理二进制数据
【发布时间】:2011-06-24 07:12:04
【问题描述】:
SELECT 
      0x0000987C As col1,
      substr(BinaryData,1,4) As col2,
      CAST(0x0000987C  AS SIGNED) As col3,
      CAST(substr(BinaryData,1,4)  AS SIGNED) As col4
FROM
(
SELECT 0x0000987C00000000 AS BinaryData
) d

返回

col1  col2   col3  col4
----  ----  -----  ----
BLOB  BLOB  39036   0

当我查看 col1col2 的 BLOB 查看器时,它们看起来都相同(下面的屏幕截图)。

那么为什么 col3 和 col4 的结果不同?

【问题讨论】:

    标签: mysql varbinary


    【解决方案1】:

    我认为这与数据类型有关。 BinaryData 具有整数数据类型,但 substr(BinaryData,1,4) 需要一个字符串。然后 CAST 对结果感到困惑。此外,CAST 使用基数 10 解析字符串,因此您需要做一些额外的工作。试试这个:

    CAST(CONV(substr(HEX(BinaryData),1,8), 16, 10)  AS SIGNED) As col4
    

    这是一个怪物,但它应该给你你想要的。

    【讨论】:

    • 是的。这似乎行得通,而且解释是有道理的。谢谢! (+1)虽然我使用了CAST(CONV(substr(HEX(BinaryData),1,8), 16, 10) AS SIGNED) ,但稍作修改(您的答案目前缺少子字符串的长度)
    猜你喜欢
    • 2011-03-04
    • 2011-08-16
    • 1970-01-01
    • 2011-08-18
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2011-02-04
    相关资源
    最近更新 更多