PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak przekonwertować pusty na null w PostgreSQL?

Istnieje NULLIF() funkcja:

SELECT NULLIF(var, '');

Jeśli zmienna przechowuje wartość w $2, otrzymujesz NULL zamiast tego.
W przykładzie zastępuję pusty ciąg:'' z NULL .

Nie ma nie ma pustego ciągu dla typu integer . Po prostu niemożliwe. Od NULLIF() nie można zmienić typu danych, musisz oczyścić swoje dane wejściowe w PHP.

Jeśli nie określiłeś domyślnej kolumny, możesz także po prostu pominąć kolumnę w WSTAW polecenie i zostanie wypełnione NULL (co jest domyślnym DEFAULT ).

Sprawdź, czy parametr jest pusty w PHP i nie dołączaj kolumny w INSERT polecenie, jeśli tak.

Lub użyj literu PHP NULL zamiast tego jak Quassnoi demonstruje tutaj .

Reszta ma sens tylko dla typów łańcuchowych

Aby upewnić się,, że , nikt nie może wpisać pustego ciągu, dodaj SPRAWDZ ograniczenie do tabeli:

ALTER TABLE tr_view
ADD CONSTRAINT tr_view_age_not_empty CHECK (age <> '');

Aby unikać wyjątków spowodowane tym, możesz dodać wyzwalacz, który automatycznie naprawia dane wejściowe:

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();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zrozumienie indeksów bitmapowych w postgresql

  2. Próbuję skonfigurować postgres na OSX

  3. CommandError:Wygląda na to, że nie masz zainstalowanego programu „psql” lub na swojej ścieżce

  4. ScaleGrid PostgreSQL w infrastrukturze chmury VMware

  5. Jak skonfigurować PostgreSQL z Postgis do obliczania odległości