Existe el NULLIF()
función:
SELECT NULLIF(var, '');
Si var
tiene el valor en $2, obtienes NULL
en su lugar.
En el ejemplo, reemplazo la cadena vacía:''
con NULL
.
No hay cadena vacía para el tipo entero . Simplemente no es posible. Desde NULLIF()
no puede cambiar el tipo de datos, debe desinfectar su entrada en PHP.
Si no definió una columna predeterminada, también puede simplemente omitir la columna en el INSERT
comando y se llenará con NULL
(que es el DEFAULT
predeterminado ).
Compruebe si el parámetro está vacío en PHP y no incluya la columna en INSERT
comando si lo es.
O use el PHP literal NULL en cambio, como demuestra Quassnoi aquí .
El resto solo tiene sentido para tipos de cadena
Para estar absolutamente seguro , nadie puede ingresar una cadena vacía agregar un CHECK
restricción a la tabla:
ALTER TABLE tr_view
ADD CONSTRAINT tr_view_age_not_empty CHECK (age <> '');
Para evitar excepciones causado por esto, puede agregar un activador que corrija la entrada automáticamente:
CREATE OR REPLACE FUNCTION trg_tr_view_avoid_empty()
RETURNS trigger AS
$func$
BEGIN
IF NEW.age = '' THEN
NEW.age := NULL;
END IF;
IF NEW.month = '' THEN
NEW.month := NULL;
END IF;
RETURN NEW;
END
$func$ LANGUAGE plpgsql
CREATE TRIGGER tr_view_avoid_empty
BEFORE INSERT OR UPDATE ON tr_view
FOR EACH ROW
WHEN (NEW.age = '' OR NEW.month = '')
EXECUTE PROCEDURE trg_tr_view_avoid_empty();