2012-12-03 17 views
20

Moja baza danych to Postgres 8. Muszę przesłać typ danych do innego. Oznacza to, że jednym z typów danych kolumny jest varchar i trzeba go rzucić w int z Postgres w oświadczeniu SELECT.Postgres typ danych obsada

Obecnie otrzymuję wartość ciągu i wrzucam ją do int w Javie.
Czy jest jakikolwiek sposób to zrobić? Przykładowy kod byłby bardzo ceniony.

+6

Po prostu FYI, mówiąc "PostgreSQL 8" przypomina trochę "Windows 6". Windows XP to 5.1 (lub 5.2 dla x64), Vista to 6.0, a Windows 7 to 6.1. Wszystkie są całkiem różne! Podobnie jest z PostgreSQL; jest 5 lat i ogromna różnica techniczna między PostgreSQL 8.0 a 8.4, więc zawsze proszę podać * pełną * wersję. –

Odpowiedz

41
cast(varchar_col AS int) -- SQL standard

lub

varchar_col::int   -- Postgres syntax shorthand

Tezy warianty składniowe są ważne (prawie) nigdzie. Wyjątek dla drugiego:

Istnieją jeszcze dwa warianty:

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

Note jak pisałem int4(varchar_col). To jest wewnętrzna nazwa typu i jest tam również zdefiniowana funkcja. Nie zadziała jako integer() lub int() .

Szczegółowe informacje w instrukcji obsługi here i here.

Aby być ważne dla integer, ciąg musi składać się z opcjonalnego znaku wiodącego (+/-), a następnie tylko cyfr. Czołowe/końcowe białe spacje są ignorowane.

+0

nie działa, jeśli * kolumna * ma * znak * typ danych –

+0

@AbelMelquiadesCallejo: Co to jest "to"? Wszystkie powyższe działa dla typu danych "znak" (z wyjątkiem przypadków wyraźnie zaznaczonych). Ciąg musi być prawidłową liczbą całkowitą, oczywiście. –