PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Changer la chaîne vide en NULL lorsque la colonne a une contrainte DATE

Utilisez NULLIF dans votre instruction INSERT :

INSERT INTO your_table (cols..., some_date) VALUES (..., NULLIF(your_input_field, ''))

Si vous souhaitez insérer NULL si la valeur en question est l'une d'un certain nombre de valeurs, il peut être plus simple d'utiliser une instruction CASE :

INSERT INTO your_table (cols..., some_date)
VALUES (..., CASE WHEN your_input_field IN ('', '#', '-', '--', '??') THEN NULL ELSE your_input_field END)

Pourrait faire la même chose avec un tableau, si c'est plus simple :

INSERT INTO your_table (cols..., some_date)
VALUES (..., CASE WHEN your_input_field = ANY('{"",#,-,--,??}'::TEXT[]) THEN NULL ELSE your_input_field END)