2012-12-03 17 views
20

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

現在のところ、文字列値を取得してJavaのintにキャストします。
これを行う方法はありますか?サンプルコードは高く評価されます。

+6

「PostgreSQL 8」は、「Windows 6」と少し似ています。 Windows XPは5.1(またはx64では5.2)、Vistaは6.0、Windows 7は6.1です。彼らはすべてかなり異なっている! PostgreSQLと同じです。 PostgreSQL 8.0と8.4の間には5年と大きな技術的相違がありますので、* full *バージョンを必ず指定してください。 –

答えて

41
cast(varchar_col AS int) -- SQL standard

または

varchar_col::int   -- Postgres syntax shorthand

論文構文バリアント(ほぼ)どこでも有効です。第二の例外:私はint4(varchar_col)を書いたか

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

注:

は、さらに2つのバリエーションがあります。これは内部型の名前であり、そのために定義された関数もあります。 integer() または int() として動作しませんでした。

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

integerに有効な文字列は、任意の先頭の記号(+/-)とその後に続く数字で構成する必要があります。先行/後続の空白は無視されます。

+0

*列*が*文字*のデータ型の場合は動作しません –

+0

@AbelMelquiadesCallejo: "それ"とは何ですか?上記のすべては、データ型 'character'(明示的に記載されている場合を除く)で動作します。もちろん、文字列は有効な整数でなければなりません。 –