Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

isnull बनाम शून्य है

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

. के बराबर है
where name is not null and name <> '' 

जो बदले में

. के बराबर है
where name <> ''

(यदि नाम IS NULL . है वह अंतिम अभिव्यक्ति अज्ञात का मूल्यांकन करेगी और पंक्ति वापस नहीं आएगी)

ISNULL . का उपयोग पैटर्न एक स्कैन में परिणाम देगा और कम कुशल है जैसा कि नीचे दिए गए परीक्षण में देखा जा सकता है।

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 <> '' */

जो आपको वह निष्पादन योजना प्रदान करे जिसकी आपको आवश्यकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर दिनांक स्वरूप उपयोगकर्ता निर्भर?

  2. इनर जॉइन के अलावा तीन टेबल जॉइन के साथ जुड़ते हैं

  3. SQL MERGE कथन परिणाम निर्धारित करना

  4. SQL 2008 में DECIMAL(14,3) को तीसरे दशमलव अंक में पूर्णांकित करना

  5. SQL सर्वर में लिंक किए गए सर्वर से तालिका विशेषाधिकार लौटाएं (T-SQL उदाहरण)