Di MS SQL-Server, saya bisa melakukan:
SELECT ISNULL(Field,'Empty') from Table
Tetapi dalam PostgreSQL saya mendapatkan kesalahan sintaksis. Bagaimana cara meniru ISNULL()
fungsi?
Di MS SQL-Server, saya bisa melakukan:
SELECT ISNULL(Field,'Empty') from Table
Tetapi dalam PostgreSQL saya mendapatkan kesalahan sintaksis. Bagaimana cara meniru ISNULL()
fungsi?
Jawaban:
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
Atau lebih idiomatik:
SELECT coalesce(field, 'Empty') AS field_alias
coalesce
. (PS Anda juga bisa melakukannya di MS SQL Server.)
coalesce
yang ada di standar SQL, dengan isnull
menjadi fungsi MS-spesifik yang pada dasarnya adalah coalesce
dengan hanya dua parameter.
Gunakan COALESCE()
sebaliknya:
SELECT COALESCE(Field,'Empty') from Table;
Fungsinya sangat mirip ISNULL
, meskipun menyediakan lebih banyak fungsi. Coalesce akan mengembalikan nilai bukan nol pertama dalam daftar. Jadi:
SELECT COALESCE(null, null, 5);
mengembalikan 5, sementara
SELECT COALESCE(null, 2, 5);
mengembalikan 2
Coalesce akan mengambil sejumlah besar argumen. Tidak ada maksimum yang didokumentasikan. Saya mengujinya akan 100 argumen dan berhasil. Ini harus banyak untuk sebagian besar situasi.
Bagaimana cara meniru fungsionalitas ISNULL ()?
SELECT (Field IS NULL) FROM ...
Mencoba:
SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
Buat fungsi berikut
CREATE OR REPLACE FUNCTION isnull(text, text) RETURNS text AS 'SELECT (CASE (SELECT $1 "
"is null) WHEN true THEN $2 ELSE $1 END) AS RESULT' LANGUAGE 'sql'
Dan itu akan berhasil.
Anda dapat membuat versi berbeda dengan tipe parameter berbeda.
ISNULL
mengambil dua argumen dan mengembalikan yang kedua adalah yang pertamanull
, jika tidak yang pertama.