PostgreSQL 文字列のビット数を取得する

PostgreSQL 文字列のビット数を取得する

PostgreSQLで、文字列のビット数を取得する手順を記述してます。「bit_length」に対象の文字列を指定することで取得することができます。数値に使用するとエラーとなります。

環境

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

手順

文字列のビット数を取得するには、「bit_length」を使用します。

bit_length( 文字列 )

実際に、ビット数を取得してみます。

SELECT    
    bit_length('a') AS "a",
    bit_length('abc') AS "abc",
    bit_length('あ') AS "あ",
    bit_length('😻') AS "😻";

実行結果を確認すると、ビット数が取得されていることが確認できます。

※1バイトは8ビットです。日本語の場合は、1文字24ビット(3バイト)となり、サロゲートペア文字を指定した場合は、32ビット(4バイト)として扱われます

数値を指定

数値を指定した場合は、エラーとなります。

SELECT    
    bit_length(1);

ERROR:  関数bit_length(integer)は存在しません
LINE 2:     bit_length(1);
            ^
HINT:  指定した名前と引数型に合致する関数がありません。明示的な型変換が必要かもしれません。
SQL 状態: 42883
文字: 16

実行結果

バイト数で取得

バイト単位で取得する場合は「octet_length( )」を使用します。

SELECT    
    octet_length('a') AS "a",
    octet_length('abc') AS "abc",
    octet_length('あ') AS "あ",
    octet_length('😻') AS "😻";

実行結果