PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara mengubah kosong menjadi nol di PostgreSQL?

Ada NULLIF() fungsi:

SELECT NULLIF(var, '');

Jika var memegang nilai dalam $2, Anda mendapatkan NULL sebagai gantinya.
Pada contoh saya mengganti string kosong:'' dengan NULL .

Tidak ada tidak ada string kosong untuk tipe integer . Hanya tidak mungkin. Sejak NULLIF() tidak dapat mengganti tipe data, Anda harus membersihkan input Anda di PHP.

Jika Anda tidak menentukan default kolom, Anda juga dapat menghilangkan saja kolom di INSERT perintah dan itu akan diisi dengan NULL (yang merupakan default DEFAULT ).

Periksa apakah parameter kosong di PHP dan jangan sertakan kolom di INSERT perintah jika ya.

Atau gunakan PHP literal NULL sebagai gantinya seperti yang ditunjukkan Quassnoi di sini .

Selebihnya hanya masuk akal untuk tipe string

Untuk memastikan sepenuhnya , tidak ada yang bisa memasukkan string kosong tambahkan CHECK kendala ke tabel:

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

Untuk menghindari pengecualian karena ini, Anda dapat menambahkan pemicu yang memperbaiki input secara otomatis:

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. Permintaan untuk ORDER BY jumlah baris yang dikembalikan dari SELECT lain

  2. Koneksi ke postgres dari TypeScript hang

  3. Membuat tabel untuk nilai Poligon di Postgis dan menyisipkan

  4. Bagaimana cara membuat izin kepada pengguna di semua tabel baru di Postgres?

  5. Debug SQL di pgAdmin ketika SQL berisi variabel