はじめに

PostgreSQLに格納されたデータを扱うとき、異なるデータ型として扱いたいデータがあるかもしれません。 例えば、”53 “のような数値を表すテキスト値があるとします。 その値に対して計算を行うには、その値を整数に変換する方が理にかなっている場合があります。 Postgresでは、値のデータ型を別のデータ型に変換するためにCAST関数が使用されます。 値は対象となるデータ型と互換性がなければならず、そうでない場合はエラーが返されます。 このPostgreSQLの記事では、PostgreSQLのCAST関数の使用方法を紹介し、異なる変換の例をいくつか見ていきます。

前提条件

このチュートリアルを進める前に、2つの主要前提条件が整っているべきです。

  • PostgreSQLの基本的な知識を持っていること。
  • PostgreSQL CAST関数

    PostgreSQLで値をCASTする方法は2つあります。 最初の方法では、CAST関数の括弧の中で値と対象となるデータ型を指定します。 構文を以下に示します。

    SELECT CAST ( VALUE AS TYPE )

    1

    値をキャストするもう一つの方法は、値とターゲットデータ型の間で :: 記法を使用して行う方法です。 以下はその構文です:

    1
    SELECT VALUE::TYPE

    この構文で、 valueはキャストまたはデータ型を変更する値を表わします。type は、この値を対象とするデータ型を表します。type の値として考えられるのは、INTEGERFLOATCHAR などです。

    PostgresのCASTの例

    それでは、PostgresのCAST関数の使用方法のいくつかの例を見てみましょう。

    Postgres CAST to String

    最初の例では、値を文字列値としてキャストすることにしましょう。 これがどのように行われるかは、次のSELECTステートメントで見ることができます。

    1
    2
    3
    4
    5
    select cast( 5137 as text ).
    text
    ——
    5137
    (1 ROW)

    Postgres CAST to Integer

    次に、テキスト型の値を整数に変換することにしましょう。 次の文がその方法を示しています。

    1
    2
    3
    4
    5
    select cast( ‘214’ as integer ).
    int4
    ——
    214
    (1 ROW)

    以下に示す例では、整数値をMONEYデータ型にキャストしています。 次のステートメントで、それがどのように機能するかを見ることができます:

    1
    2
    3
    4
    5
    SELECT CAST(7419 AS MONEY);
    money
    ———–
    $7,419.0

    1
    2(1 ROW)

    Postgres CAST to Interval

    次の例は、テキスト値をINTERVALデータ型にキャストする例です。 次のSELECTステートメントは、それがどのように動作するかを示しています。

    1
    2
    3
    4
    5
    SELECT CAST (‘1 year 2 months 7 days’ AS INTERVAL);
    INTERVAL
    ———————-
    1 YEAR 2 MONS 7 DAYS
    (1 ROW)

    Postgres CAST to Date

    CAST 機能を使って、以下の例のようにテキスト 値を DATE データ型に変換することも可能です。

    1
    2
    3
    4
    5
    SELECT CAST( ‘July 24, 1999’ AS DATE ).CAST( ‘1999年7月24日 ).DATE( ‘1999年7月24日 );
    DATE
    ————
    1999-07-24
    (1 ROW)

    ここで、CAST文字を日付とする別の方法を紹介します。

    1
    2
    3
    4
    5
    select cast( ’24-07-99′ as date ).DATE SELECT CAST( ’24-07-99′ as date );
    DATE
    ————
    1999-07-24
    (1 ROW)

    Postgres CAST With Trim

    以下に示す例では、テキスト値をトリミングし、TRIMから返った結果をキャストしています。

    1
    2
    3
    4
    5
    SELECT CAST( TRIM( LEADING ‘DATE ‘ FROM ‘DATE January 28, 1998’ ) AS DATE);
    ltrim
    ————
    1998-01-28
    (1 ROW)

    Postgres CAST With Concatenation

    ||オペレータを使って二つ以上のストリングを連結させることができます。 最後の例では、文字列値とTEXTにキャストされた日付値とを連結します。 以下のステートメントは、それがどのように行われるかを示しています:

    SELECT ‘The current date is ‘ || CAST( CURRENT_DATE AS TEXT );
    ?COLUMN?
    ——————————–
    The CURRENT DATE IS 2020-03-28
    (1 ROW)

    1
    2
    3
    4
    5

    結論

    PostgreSQLでデータに対するクエリを行うとき、ある列の値が別のデータ型に変換したい場合があるとします。 データ型を変更することで、返されたデータに対する計算や処理操作をより簡単に行うことができます。 この記事では、PostgresのCAST関数を使って値のデータ型を変換する方法を紹介しました。 この記事で紹介したすべての例に従ったのであれば、CAST関数を自分のPostgreSQLクエリで効果的に使用することができるようになるでしょう。

    コメントを残す

    メールアドレスが公開されることはありません。