38

私のデータベースはPostgres8です。データ型を別のデータ型にキャストする必要があります。つまり、列のデータ型の1つは、ステートメント内のPostgresでvarcharキャストする必要があります。intSELECT

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

4

1 に答える 1

69
cast(varchar_col AS int)  -- SQL standard

また

varchar_col::int          -- Postgres syntax shorthand

これらの構文バリアントは (ほぼ)どこでも有効です。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()

最後の形式は配列型では機能しないことにも注意してください。またはである必要int[] '{1,2,3}'があります。'{1,2,3}'::int[]cast('{1,2,3}' AS int[])

マニュアルの詳細はこちらこちら

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

于 2012-12-03T03:48:34.613 に答える