Ваш столбец значений всегда имеет тип varchar, кажется, вы хотите проверить, является ли содержимое числом / целым числом.
Вы можете сделать это, создав функцию, например,
create function isdigits(text) returns boolean as '
select $1 ~ ''^(-)?[0-9]+$'' as result
' language sql;
(Эта функция, вероятно, может быть реализована путем попытки преобразования текста в int или использования функции int4 () и перехвата возникающей ошибки и возврата NULL.)
С такой функцией вы можете сделать:
SELECT id,
CASE
WHEN value IS NULL THEN 0
WHEN isdigits(value) THEN (SOME_QUERY)
ELSE (ANOTHER_QUERY)
END
FROM test;