2012-12-03 27 views
20

Veritabanım Postgres 8'dir. Veri türünü başka birine vermem gerekiyor. Bu, sütun veri türlerinden birinin varchar olduğu ve SELECT ifadesinde Postgres ile int içine dökülmesi gerektiği anlamına gelir.Postgres veri türü cast

Şu anda dize değerini alıyorum ve Java'da int içine döküyorum.
Bunu yapmanın bir yolu var mı? Örnek kod çok takdir edilecektir.

+6

Sadece "PostgreSQL 8" diyerek "FYI" demek biraz "Windows 6" demeye benziyor. Windows XP 5.1 (veya x64 için 5.2), Vista 6.0 ve Windows 7 6.1'dir. Hepsi çok farklı! PostgreSQL ile aynı şeydir; PostgreSQL 8.0 ile 8.4 arasında 5 yıl ve büyük bir teknik fark var, bu yüzden lütfen her zaman * tam * sürümünü belirtin. –

cevap

41
cast(varchar_col AS int) -- SQL standard

veya

varchar_col::int   -- Postgres syntax shorthand

Tezler sözdizimi varyantları geçerli (neredeyse) yerde bulunmaktadır. İkinci için İstisna: Ben int4(varchar_col)yazdım nasıl

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

Not:

iki varyantı vardır. Bu iç tip adı ve bunun için tanımlanmış bir işlevi de var. integer() veya int() olarak çalışmaz. here ve here adresindeki Ayrıntılar

.

integer için geçerli olması için, dize, isteğe bağlı bir başlangıç ​​işaretinden (+/-) ve ardından yalnızca rakamlardan oluşmalıdır. Lider/takip eden beyaz boşluk göz ardı edilir.

+0

* sütun * karakter * karakter * –

+0

@AbelMelquiadesCallejo ise çalışmıyor: "o" nedir? Yukarıdakilerin tümü, "karakter" veri türü için çalışır (açıkça belirtildiği durumlar hariç). Dize, geçerli bir tamsayı olmalıdır. –