データベース – PostgreSQLの実践 – 型強制

Type Coercion

PostgreSQLは型強制(型キャスト、明示的型キャストとも呼ばれます)について3つの別々の慣習をサポートしています。 型強制は、あるデータ型から別のデータ型に値を変更するPostgreSQLの方法を指す、少々見苦しい用語です。 SQL文の途中で、これは任意の型の定数を明示的に作成するという正味の効果を持ちます。

一般的に、文字列定数に含まれる値を他の型にキャストするために、以下の3つの方法のいずれかを使用することができます。

  • type ‘value ‘

  • ‘value ‘::type

  • CAST (‘value ‘ AS type )

文字列にキャストしたい数値定数の場合、以下のシンタックスフォームのいずれかを使う必要があるでしょう。

  • value ::type

  • CAST (value AS type )

この構文の value は変更したいデータ型の定数を、type はその値をキャストしたい、あるいは強制する型を表します。

注意: money 型は非推奨であり、したがって簡単にキャストできないことを覚えておいてください。

定数は、異なる型に強制される可能性がある唯一のデータ値ではありません。 SQL クエリによって返されるデータ セットの列は、次の構文の 1 つでその識別子を使用してキャストすることができます:

  • identifier ::type

  • CAST (identifier AS type )

すべてのデータ タイプを他のすべてのデータ タイプに結合できるわけではないため、注意してください。 例えば、文字列abcdをバイナリビット型に変換する意味のある方法はありません。 無効なキャストはPostgreSQLのエラーになります。 一般的に有効な鋳造は、文字列、日付/時刻型、数値型からテキスト、または文字列から数値への鋳造です。 これらはしばしば型そのものの名前を持ちますが(text()関数のような)、他のものはより具体的に名付けられます(bitfromint4()のような)。 例3-30は、整数1000を文字1000を表すtypeextの文字列に変換する関数を示しています。 型変換関数の使用

booktown=# SELECT text(1000) booktown-# AS explicit_text; explicit_text--------------- 1000(1 row)

PostgreSQLのパーサが認識する意味論が矛盾しているため、型強制フォーマットtype ‘value ‘ は単一の値のデータ型(例えば、単一引用符で囲まれた文字列定数)だけを指定するために使用することができます。 対照的に、その他の利用可能な型強制の方法 (‘value ‘::type,CAST(‘value’ AS type )、および適用可能な場合は型変換関数) は、任意の式の型を指定するために使用することができます。 を使用すると、PostgreSQLは指定されたデータ型の名前を持つ関数を期待することになり(これはしばしばエラーを引き起こします)、他のメソッドはグループ化された式に対して構文的に有効であるからです。

コメントを残す

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