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

isnull vs adalah null

where isnull(name,'') <> ''

setara dengan

where name is not null and name <> '' 

yang pada gilirannya setara dengan

where name <> ''

(jika nama IS NULL ekspresi terakhir itu akan dievaluasi menjadi tidak diketahui dan baris tidak dikembalikan)

Penggunaan ISNULL pola akan menghasilkan pemindaian dan kurang efisien seperti yang dapat dilihat pada pengujian di bawah ini.

SELECT ca.[name],
       [number],
       [type],
       [low],
       [high],
       [status]
INTO   TestTable
FROM   [master].[dbo].[spt_values]
       CROSS APPLY (SELECT [name]
                    UNION ALL
                    SELECT ''
                    UNION ALL
                    SELECT NULL) ca 


CREATE NONCLUSTERED INDEX IX_TestTable ON dbo.TestTable(name)

GO


SELECT name FROM TestTable WHERE isnull(name,'') <> ''

SELECT name FROM TestTable WHERE name is not null and name <> ''
/*Can be simplified to just WHERE name <> '' */

Yang seharusnya memberi Anda rencana eksekusi yang Anda butuhkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bandingkan Paket Eksekusi di SQL Server

  2. Kesalahan Koneksi SQL Server 2008 Tidak ada proses di ujung pipa yang lain

  3. Apakah rollback diperlukan jika kueri dilengkapi dengan kesalahan?

  4. Ratakan/gabungkan interval waktu yang tumpang tindih

  5. Bagaimana Fungsi FORMAT() Bekerja di SQL Server (T-SQL)