cast(varchar_col AS int) -- SQL standard или
varchar_col::int -- Postgres syntax shorthand Тези варианти на синтаксис са валидни (почти) навсякъде . Вторият може да изисква влагане на скоби в специални ситуации:
- PostgreSQL:Създайте индекс за дължината на всички полета на таблицата
И първото може да се изисква, когато само функционална нотация е позволена от синтактични ограничения:
- PostgreSQL - CAST срещу ::оператор на LATERAL таблична функция
Има още два варианта:
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 , низът трябва да се състои от незадължителен водещ знак (+ /- ), последвано само от цифри. Началното/задното бяло пространство се игнорира.