存储十六进制值

时间:2019-04-08 07:51:58

标签: sql-server tsql

我想在MSSQL 2016中有效地存储此值:

6d017ed2a48846f0ac025dd8603902c7

即固定长度,从0到f,十六进制,对吗? Char(32)似乎太昂贵了。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

在几乎所有情况下,您都不应该将其存储为字符串。 SQL Server具有binary and varbinary types

此字符串表示一个16字节的二进制值。如果预期大小是固定的,则可以将其存储为binary(16)。如果大小更改,则可以将其存储为varbinary(N),其中N是最大预期大小。

请勿使用varbinary(max),它用于存储BLOB,并且具有特殊的存储和索引特性。

在少数情况下,存储字符串本身是有意义的,例如,如果它是API中使用的哈希字符串,还是要向人类展示。在这种情况下,数据将始终以字符串形式出现,并且始终必须转换为要使用的字符串。在这种情况下,不断转换的成本可能会超过存储收益。