PostgreSQL エスケープされたUnicode文字を文字列に変換する

PostgreSQL エスケープされたUnicode文字を文字列に変換する

PostgreSQLで、エスケープされたUnicode文字を文字列に変換する手順を記述してます。「unistr」にUnicode文字を指定することで可能です。実行結果はpgadmin上で確認してます。

環境

  • OS CentOS Stream release 9
  • PostgreSQL 15.1
  • pgadmin4 6.16

手順

指定した区切り文字で配列を作成するには、「string_to_array」を使用します。

unistr(Unicode文字);

指定できる形式は以下となります

\XXXX(16進数4桁)
\+XXXXXX(16進数6桁)
\uXXXX(16進数4桁)
\UXXXXXXXX(16進数8桁)

実際に、判定してみます。

SELECT 
unistr('\0048\0065\006C\006C\006F');

実行結果を見ると、変換されていることが確認できます。

サロゲートペア

サロゲートペア文字のような通常の2バイトで1文字で表すところを、4バイトで1文字となるものでも、変換可能です。

SELECT 
unistr('\+01F600');

実行結果

存在しない値

存在しない値を指定するとエラーとなります。

SELECT 
unistr('\+11F600');

ERROR:  不正なUnicodeコードポイント: 11F600
SQL 状態: 22023

実行結果