sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-query voor een lijst met toegestane waarden in een beperking?

U kunt de systeemcatalogus pg_constraint , bijv.:

select consrc
from pg_constraint
where conrelid = 'requests'::regclass
and consrc like '(status%';

                                  consrc                                   
---------------------------------------------------------------------------
 (status = ANY (ARRAY['pending'::text, 'success'::text, 'failure'::text]))
(1 row) 

Gebruik de volgende functie om uit te pakken de tekenreeks:

create or replace function get_check_values(str text)
returns setof text language plpgsql as $$
begin
    return query
        execute format (
            'select * from unnest(%s)',
            regexp_replace(str, '.*(ARRAY\[.*\]).*', '\1'));
end $$;

select get_check_values(consrc)
from pg_constraint
where conrelid = 'requests'::regclass
and consrc like '(status%';

 get_check_values 
------------------
 pending
 success
 failure
(3 rows)    


  1. Hoe kan ik een tijdstempel met tijdzone in postgresql invoegen met een voorbereide verklaring?

  2. java.sql.SQLException:kan niet worden geconverteerd naar interne representatie:tijdens het doorgeven van ArrayList aan Oracle.sql.ARRAY

  3. Selecteer meerdere veldduplicaten uit MySQL Database

  4. Versnel het invoegen van grote datasets van txt-bestand naar mySQL met behulp van python