How to check, if a value is an integer with plpgsql?
14,652
Solution 1
SELECT current_setting('myvar.user') ~ '^[0-9]+$'
Solution 2
Taken from archives.postgresql.org:
CREATE FUNCTION isnumeric(text) RETURNS boolean AS '
SELECT $1 ~ ''^[0-9]+$''
' LANGUAGE 'sql';
Comments
-
return1.at almost 2 years
i am using this function in a trigger:
CREATE OR REPLACE FUNCTION xx() RETURNS trigger AS $xx$ BEGIN INSERT INTO my_log (x, y, z) VALUES (NEW.x, NEW.y, current_setting('myvar.user')); RETURN NULL; END; $xx$ LANGUAGE plpgsql;
now i would like to check, if 'myvar.user' is a valid integer, and if not, do another INSERT statement.
how would i do this?