How do I cast a string to integer and have 0 in case of error in the cast with PostgreSQL?

前端 未结 13 914
误落风尘
误落风尘 2020-12-02 06:27

In PostgreSQL I have a table with a varchar column. The data is supposed to be integers and I need it in integer type in a query. Some values are empty strings. The followin

13条回答
  •  粉色の甜心
    2020-12-02 06:51

    CREATE OR REPLACE FUNCTION parse_int(s TEXT) RETURNS INT AS $$
    BEGIN
      RETURN regexp_replace(('0' || s), '[^\d]', '', 'g')::INT;
    END;
    $$ LANGUAGE plpgsql;
    

    This function will always return 0 if there are no digits in the input string.

    SELECT parse_int('test12_3test');

    will return 123

提交回复
热议问题