PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Cambia la stringa vuota in NULL quando la colonna ha il vincolo DATE

Usa NULLIF nella tua dichiarazione INSERT:

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

Se vuoi inserire NULL se il valore in questione è uno qualsiasi di un certo numero di valori, potrebbe essere più semplice utilizzare un'istruzione CASE:

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

Potrebbe fare lo stesso anche con un array, se è più semplice:

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