はじめに
PostgreSQLに格納されたデータを扱うとき、異なるデータ型として扱いたいデータがあるかもしれません。 例えば、”53 “のような数値を表すテキスト値があるとします。 その値に対して計算を行うには、その値を整数に変換する方が理にかなっている場合があります。 Postgresでは、値のデータ型を別のデータ型に変換するためにCAST
関数が使用されます。 値は対象となるデータ型と互換性がなければならず、そうでない場合はエラーが返されます。 このPostgreSQLの記事では、PostgreSQLのCAST
関数の使用方法を紹介し、異なる変換の例をいくつか見ていきます。
前提条件
このチュートリアルを進める前に、2つの主要前提条件が整っているべきです。
PostgreSQL CAST関数
PostgreSQLで値をCAST
する方法は2つあります。 最初の方法では、CAST
関数の括弧の中で値と対象となるデータ型を指定します。 構文を以下に示します。
1
|
値をキャストするもう一つの方法は、値とターゲットデータ型の間で ::
記法を使用して行う方法です。 以下はその構文です:
1
|
SELECT VALUE::TYPE
|
この構文で、 value
はキャストまたはデータ型を変更する値を表わします。type
は、この値を対象とするデータ型を表します。type
の値として考えられるのは、INTEGER
、FLOAT
、CHAR
などです。
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 |
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
にキャストされた日付値とを連結します。 以下のステートメントは、それがどのように行われるかを示しています:
1
2 3 4 5 |
結論
PostgreSQLでデータに対するクエリを行うとき、ある列の値が別のデータ型に変換したい場合があるとします。 データ型を変更することで、返されたデータに対する計算や処理操作をより簡単に行うことができます。 この記事では、PostgresのCAST関数を使って値のデータ型を変換する方法を紹介しました。 この記事で紹介したすべての例に従ったのであれば、CAST
関数を自分のPostgreSQLクエリで効果的に使用することができるようになるでしょう。