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

एसक्यूएल में एक रिकॉर्ड में शून्य मान वाले सभी फ़ील्ड कैसे गिनें?

declare @T table
(
  ID int,
  Name varchar(10),
  Age int,
  City varchar(10),
  Zip varchar(10)
)  

insert into @T values 
(1, 'Alex', 32, 'Miami', NULL),
(2,  NULL,  24,  NULL,   NULL)

;with xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
select ID,
       (
          select *
          from @T as T2
          where T1.ID = T2.ID
          for xml path('row'), elements xsinil, type 
       ).value('count(/row/*[@ns:nil = "true"])', 'int') as NullCount
from @T as T1

परिणाम:

ID          NullCount
----------- -----------
1           1
2           3

अपडेट करें:

यहाँ एक बेहतर संस्करण है। मार्टिन स्मिथ को धन्यवाद ।

;with xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
select ID,
       (
          select T1.*
          for xml path('row'), elements xsinil, type 
       ).value('count(/row/*[@ns:nil = "true"])', 'int') as NullCount
from @T as T1

अपडेट करें:

और थोड़ी तेज़ XQuery अभिव्यक्ति के साथ।

;with xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
select ID,
       (
          select T1.*
          for xml path('row'), elements xsinil, type 
       ).value('count(//*/@ns:nil)', 'int') as NullCount
from @T as T1


  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 क्वेरी?

  4. SQL सर्वर (T-SQL) में STRING_ESCAPE () फ़ंक्शन कैसे काम करता है

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