PostgreSQLで16進数リテラルをどのように記述しますか?欲しい0xCC
、 私が行った場合;
SELECT 0xCC;
xcc
-----
0
(1 row)
したがって、PostgreSQLはxcc
をエイリアスとして解析しています。
int
)ビット文字列定数 を使用して、16進バイトを書き込むことができます。
SELECT x'CC'; -- same as b'11001100'
これは基本的にbit x'CC'
が返す Bit String Type と同じですが、int
に使用できるキャストがあるため、x'CC'::int * 5
を実行できます
バイトシーケンスが有効なUTF-8文字の場合、 E''
にバックスラッシュエスケープシーケンスを付けて (単一バックスラッシュ\
)
SELECT E'\x41';
?column?
----------
A
(1 row)
シーケンスが無効な場合、エラーが発生します
# SELECT E'\xCC';
ERROR: invalid byte sequence for encoding "UTF8": 0xcc
bytea
-固有。PostgreSQLには、任意のバイトを許可する可変長のバイナリデータ型があります。このタイプは bytea
と呼ばれます。 bytea hex format を使用して、このフォーマットに移行できます。これでは、次のいずれかを使用します。
\\
を使用しますbytea
へのキャストを使用します。ここに両方の構文があります、
SELECT bytea E'\\xDEADBEEF', bytea '\xDEADBEEF';
bytea | bytea
------------+------------
\xdeadbeef | \xdeadbeef
(1 row)
bytea
として保存するのではなく、大きな数値のみを保存する必要がある場合は、Big-Numbersのopenssl実装を使用してそれらを保存する pg_bignum
を確認します。