it-swarm.com.de

Wie schreibe ich ein Hex-Literal in PostgreSQL?

Wie schreibt man ein Hex-Literal in PostgreSQL? Wie sagen, ich will 0xCC, wenn ich mache;

SELECT 0xCC;
 xcc 
-----
   0
(1 row)

PostgreSQL analysiert also xcc als Alias.

3
Evan Carroll

Beliebige Daten/Ganzzahlen (int)

Sie können das hexidemische Byte mit Bit-String-Konstanten schreiben

SELECT x'CC';  -- same as b'11001100'

Welches ist im Wesentlichen das gleiche wie bit x'CC' Rückgabe eines Bit String Type , aber int steht eine Umwandlung zur Verfügung, damit Sie x'CC'::int * 5

UTF-8-Byte-Sequenz

Wenn die Byte-Sequenzen ein gültiges UTF-8-Zeichen sind, können Sie auch E'' mit einer Backslash-Escape-Sequenz ( einzelner Backslash \)

SELECT E'\x41';
 ?column? 
----------
 A
(1 row)

Wenn die Sequenz ungültig ist, wird eine Fehlermeldung angezeigt

# SELECT E'\xCC';
ERROR:  invalid byte sequence for encoding "UTF8": 0xcc

bytea - spezifisch.

PostgreSQL hat einen binären Datentyp variabler Länge, der beliebige Bytes zulässt. Dieser Typ heißt bytea . Sie können mit dem Bytea-Hex-Format in dieses Format wechseln. In diesem verwenden wir entweder,

  • Verwenden Sie einen doppelten Backslash \\
  • Verwenden Sie die Umwandlung für bytea aus der Hex-Darstellung.

Hier sind beide Syntax,

SELECT bytea E'\\xDEADBEEF', bytea '\xDEADBEEF';
   bytea    |   bytea    
------------+------------
 \xdeadbeef | \xdeadbeef
(1 row)

Große Zahlen speichern

Wenn Sie nur große Zahlen speichern müssen, anstatt sie als bytea zu speichern, würde ich pg_bignum die sie mithilfe der openssl-Implementierung von Big Numbers speichert.

4
Evan Carroll