【发布时间】:2013-01-14 12:41:54
【问题描述】:
我想将 SHA1 哈希存储到 BINARY(20) 列中。我尝试了准备INSERT INTO foo SET ( hash=? ),然后执行绑定到包含 20 字节二进制值的变量的语句,但出现运行时语法错误“... hash='\0\0#*$^!... '”。 (我很困惑为什么执行一个准备好的语句会代表这样的值。)This post 并没有表明将 SHA1 存储到 BINARY(20) 列中存在任何问题,但没有表明它是如何使用 SQL 完成的。
更新:“为什么是二进制而不是十六进制?”将有大约 10 亿行,因此 20 个额外的字节很重要,而且我被告知数字查找的速度是字符串查找的两倍(并且 BINARY 字段将被视为数字)
更新 2:错误消息不是抱怨二进制值的表示,而是抱怨 SET 列表周围的括号。
【问题讨论】:
-
你有充分的理由不对其进行十六进制或base64编码吗?
-
是的:大约有 10 亿行,所以 20 个额外的字节很重要,而且我被告知数字查找的速度是字符串查找的两倍(并且 BINARY 字段将被视为数字)。
-
你让我在“十亿行”:)
-
@BartFriederichs - 他需要理由吗?
-
是的 - 我已经阅读了有关“使用十六进制值更容易”等的各种帖子。我们是专家。我们可以处理二进制文件。 ;-)