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';
Share:
14,652
return1.at
Author by

return1.at

web application developer

Updated on June 05, 2022

Comments

  • return1.at
    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?