在 PostgreSQL 中将 HEX 作为 BYTEA 插入是否有充分的理由?

Is there a good reason to insert HEX as BYTEA in PostgreSQL?

我从文档中找到 this

... binary strings specifically allow storing octets of value zero and ... octets outside the range 32 to 126 ...

对我来说,似乎没有理由使用 BYTEA 来存储 HEX 值?仍然有很多人似乎将 BYTEA 用于某事。 like 这个:

013d7d16d7ad4fefb61bd95b765c8ceb
007687fc64b746569616414b78c81ef1

这样做有充分的理由吗?

三个很好的理由:

  1. 它将需要更少的存储空间space,因为两个十六进制数字存储为一个字节。

  2. 它会自动检查值的正确性:

    SELECT decode('0102ABCDNONSENSE', 'hex');
    ERROR:  invalid hexadecimal digit: "N"
    
  3. 如果您的 API 支持,您可以存储和检索二进制数据,而无需将它们与文本进行转换。