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

时间:2018-09-13 17:58:24

标签: postgresql postgresql-9.6

我从文档中发现了this

  

...二进制字符串特别允许存储值为零和   ...八位组超出32到126的范围...

在我看来,没有理由使用BYTEA存储十六进制值吗?似乎仍有很多人使用BYTEA做某事。 like这:

<!DOCTYPE html>
<html>
  <head><meta charset="utf-8"></head>
  <body>

    <button id="getCrown" type="button"
            onclick="window.location.href='index.html'; set_crown();">
            Give me that crown!
    </button>


    <script type="text/javascript">

      function set_crown(){
        localStorage.setItem('crown', 'visible');
      };
    </script>

  </body>
</html>

这样做有充分的理由吗?

1 个答案:

答案 0 :(得分:0)

有三个很好的理由:

  1. 由于两个十六进制数字存储为一个字节,因此需要较少的存储空间。

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

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