Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Perbaiki "Setidaknya salah satu argumen untuk COALESCE harus berupa ekspresi yang bukan konstanta NULL" di SQL Server

Di SQL Server, jika Anda mendapatkan pesan kesalahan Msg 4127 yang berbunyi "Setidaknya salah satu argumen untuk COALESCE harus berupa ekspresi yang bukan konstanta NULL", itu mungkin karena semua argumen Anda ke COALESCE() ekspresinya adalah NULL konstan.

Untuk memperbaiki masalah ini, pastikan setidaknya satu argumen bukan NULL konstan.

Contoh Kesalahan

Berikut adalah contoh kode yang menghasilkan kesalahan ini:

SELECT COALESCE( null, null );

Kami mendapatkan ini:

Msg 4127, Level 16, State 1, Line 1
At least one of the arguments to COALESCE must be an expression that is not the NULL constant.

Dalam hal ini, semua argumen adalah NULL konstan, dan kesalahan dikembalikan.

Solusi

Solusinya mudah. Yang perlu kita lakukan adalah memastikan setidaknya satu argumen bukan NULL konstan:

SELECT COALESCE(null, 'Cat', 'Dog');

Hasil:

Cat

Dalam hal ini, Cat adalah yang pertama non-NULL argumen, dan jadi COALESCE() mengembalikan nilai tersebut.

Seperti yang terlihat di sini, boleh saja menyertakan NULL konstan sebagai argumen, selama setidaknya ada satu argumen lain yang tidak NULL konstan.

NULL Ekspresi &Kolom Basis Data

Perhatikan bahwa NULL konstanta tidak sama dengan ekspresi yang menghasilkan NULL . Dan itu tidak sama dengan kolom database yang berisi NULL .

Misalnya, jika semua argumen mereferensikan kolom database, dan kolom database tersebut adalah NULL , maka kita tidak mendapatkan kesalahan.

Misalkan kita menjalankan kueri berikut:

SELECT CustomerId, CustomerCategoryId
FROM Sales.SpecialDeals
WHERE SpecialDealId = 1;

Hasil:

CustomerId  CustomerCategoryId
----------- ------------------
NULL        NULL

Kedua kolom berisi NULL nilai.

Jadi jika kita meneruskan kedua kolom ke COALESCE() , kita mendapatkan hasil dari NULL :

SELECT COALESCE( CustomerId, CustomerCategoryId )
FROM Sales.SpecialDeals
WHERE SpecialDealId = 1;

Hasil:

NULL

Hal yang sama berlaku jika kita mengganti salah satu kolom dengan NULL konstan:

SELECT COALESCE( CustomerId, null )
FROM Sales.SpecialDeals
WHERE SpecialDealId = 1;

Hasil:

NULL

Jadi hanya ketika semua argumennya adalah NULL konstan sehingga kita mendapatkan kesalahan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menampilkan Query dan Hasil di Tab Terpisah di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Part 15

  2. Cara Mengonversi String ke Tanggal/Waktu di SQL Server menggunakan CONVERT()

  3. Konfigurasikan Lucene.Net dengan SQL Server

  4. Menghubungkan SQL Server ke PostgreSQL

  5. SQL Server - gabungkan baris ke dalam daftar yang dipisahkan koma