如何在 PostgreSQL 中编写十六进制文字?

Eva*_*oll 8 postgresql syntax

你如何在 PostgreSQL 中编写十六进制文字?就像说我想要0xCC,如果我这样做;

SELECT 0xCC;
 xcc 
-----
   0
(1 row)
Run Code Online (Sandbox Code Playgroud)

所以 PostgreSQL 将 解析xcc为别名。

Eva*_*oll 12

任意数据/整数(int )

您可以使用位串常量写入十六进制字节

SELECT x'CC';  -- same as b'11001100'
Run Code Online (Sandbox Code Playgroud)

这本质上与bit x'CC'返回位字符串类型相同,但有一个可用的强制转换,int因此您可以执行x'CC'::int * 5

UTF-8 字节序列

如果字节序列是有效的 UTF-8 字符,您还可以使用E''反斜杠转义序列单反斜杠 \

SELECT E'\x41';
 ?column? 
----------
 A
(1 row)
Run Code Online (Sandbox Code Playgroud)

如果序列无效,您将收到错误消息

# SELECT E'\xCC';
ERROR:  invalid byte sequence for encoding "UTF8": 0xcc
Run Code Online (Sandbox Code Playgroud)

bytea-具体的。

PostgreSQL 有一个可变长度的二进制数据类型,允许任意字节。这种类型称为bytea. 您可以使用bytea 十六进制格式进入这种格式。在这我们要么使用,

  • 用一个 双反斜杠\\
  • 使用bytea来自十六进制表示的强制转换。

这里有两个语法,

SELECT bytea E'\\xDEADBEEF', bytea '\xDEADBEEF';
   bytea    |   bytea    
------------+------------
 \xdeadbeef | \xdeadbeef
(1 row)
Run Code Online (Sandbox Code Playgroud)

存储大量数字

如果您只需要存储大数字,而不是像bytea我将pg_bignum使用大数字的 openssl 实现检查哪些存储它们那样存储它们。