web-dev-qa-db-ja.com

Postgresデータ型キャスト

私のデータベースはPostgres 8です。データ型を別の型にキャストする必要があります。つまり、列データ型の1つはvarcharであり、intステートメントでPostgresを使用してSELECTにキャストする必要があります。

現在、文字列値を取得し、Javaでintにキャストしています。
それを行う方法はありますか?サンプルコードをいただければ幸いです。

27
Débora
cast(varchar_col AS int)  -- SQL standard

または

_varchar_col::int          -- Postgres syntax shorthand_

これらの構文バリアントは有効です(ほぼ)anywhere。 2番目の例では、特別な状況で括弧をネストする必要があります。

さらに2つのバリアントがあります。

_int4(varchar_col)         -- only works for some type names
int '123'                 -- must be an untyped, quoted string literal
_

書き方に注意してください_int4__(varchar_col)_それは内部タイプ名であり、それに定義された関数もあります。として機能しません integer() または int()

最後の形式はarrayタイプでは機能しないことにも注意してください。 _int[] '{1,2,3}'_ _'{1,2,3}'::int[]_またはcast('{1,2,3}' AS int[])でなければなりません。

マニュアルの詳細 here および here

integerに対して有効であるためには、文字列はオプションの先行符号(_+_/_-_)とそれに続く数字のみで構成されている必要があります。前後の空白は無視されます。

50