Проверка на конвертируемость.

VanillaNInja
Дата: 18.11.2014 17:29:33
Ребята, подскажите, возможно ли проверить число на возможность конвертации?
То есть есть "нечто" и если возможно его скатить в integer то получить откуда-нибудь true а если нет, то false?
Maxim Boguk
Дата: 18.11.2014 18:18:19
VanillaNInja
Ребята, подскажите, возможно ли проверить число на возможность конвертации?
То есть есть "нечто" и если возможно его скатить в integer то получить откуда-нибудь true а если нет, то false?


хранимка с ловлей исключения - легко....
только очень медленно для больших обьемов...

--Maxim Boguk
www.postgresql-consulting.ru
VanillaNInja
Дата: 21.11.2014 15:52:39
Не совсем понятно, какое исключение ловить.
invalid_text_representation?
kjgfnf
Дата: 21.11.2014 16:12:20
VanillaNInja
Не совсем понятно, какое исключение ловить.
invalid_text_representation?


SELECT 'f'::integer ;
/*
ERROR: invalid input syntax for integer: "f"
SQL-состояние: 22P02
*/

http://www.postgresql.org/docs/current/static/errcodes-appendix.html
GO;
{^F} "22P02" => "invalid_text_representation"
kjgfnf
Дата: 21.11.2014 16:30:40
хотя если входящее не текст, а anyelement, да и речь не обязательно про integer, -- то ловить надо любую ошибку.

SELECT 1E30::integer;
/*
ERROR: integer out of range
SQL-состояние: 22003
*/


иногда бывают забавные вещи

SELECT 
(('0.'||repeat('0',350)||1)::double precision  )
/*ERROR: "0.000..... 001" is out of range for type double precision
SQL-состояние: 22003
*/

-- последнее, [с т.з. физика], -- минимум -- баг.
VanillaNInja
Дата: 21.11.2014 16:37:29
kjgfnf,

Спасибо! А как поймать их все разом? Я только по одному умею :-/
kjgfnf
Дата: 21.11.2014 16:53:11
VanillaNInja,
EXCEPTION WHEN OTHERS THEN
VanillaNInja
Дата: 21.11.2014 17:05:26
kjgfnf,

Спасибо большое )