我有表A,它将id存储为二进制(16)。类似于0x12345678的东西。 我还有表B,它将id存储为varbinary(80)列。此列引用与表A相同的ID,但每个id在其前面都有一个额外的填充“10”。像这样:0x101234567。
我需要在这两个表上运行连接,因此需要找到一种在这两种格式之间进行转换的方法。
从技术上讲,我可以通过做一个bithift来做到这一点,但据我所知,它不支持二进制类型。
我试图将值转换为BIGINT,然后将其转换回二进制,但BIGINT不足以保存该值,因此我最终失去了所有高位数。
我想应该有一种直截了当的方法来做到这一点,我无法想到。
答案 0 :(得分:0)
你可以像这样使用按位
WHERE colA & 0xFFFFFFF = colB & 0xFFFFFFF
取决于优化器,这可能比concat更快(因为按位并且CPU的操作非常快)。