2012-03-14 18 views
10

मेरे पास लगभग 20 कॉलम वाली एक टेबल है। एक तरफ बाहर टाइप करके:क्या कोई कॉलम शून्य है या नहीं, यह जांचने का कोई त्वरित तरीका है?

Where column1 is null OR column2 is null OR column3 is null etc... 

वहाँ एक तेज तरीका सिर्फ हर कॉलम की जांच करें और देखें कि किसी भी मूल्य शून्य है और यदि हां, तो यह है कि रिकॉर्ड वापस जाने के लिए है?

+5

जल्दी लिखने के लिए या जल्दी अमल करने के लिए? –

उत्तर

4

नहीं। इसे शीघ्रता से कोड करने के तरीके हैं, लेकिन आपके जैसे कोई शॉर्टकट नहीं हैं। an answer I gave on dba.stackexchange से लिया:

DECLARE @tb NVARCHAR(255), @sql NVARCHAR(MAX); 

SET @tb = N'dbo.[table]'; 

SET @sql = N'SELECT * FROM ' + @tb + ' WHERE 1 = 0'; 

SELECT @sql = @sql + N' OR ' + QUOTENAME(name) + ' IS NULL' 
    FROM sys.columns 
    WHERE [object_id] = OBJECT_ID(@tb); 

EXEC sp_executesql @sql; 
+0

SQL सर्वर 2005 में काम नहीं करेगा, लेकिन आशा है कि ओपी को पता चलेगा कि इसके बारे में क्या करना है। –

+0

@Andriy धन्यवाद। सही किया। मैं हर समय उस पर खुद को पकड़ता हूं, कभी-कभी मुझे याद आती है। इस मामले में मैंने इसे 2008 के लिए एक प्रश्न से कॉपी किया। –

+0

आपका स्वागत है। :) –

0

यही कारण है कि तेज साधन पर निर्भर करता है।

यदि आपका मतलब SQL सर्वर निष्पादित करने के लिए तेज़ है, तो एक चीज जो आप कर सकते हैं, एक बिट कॉलम अपडेट से ट्रिगर लिखना है जो निर्दिष्ट करता है कि क्या संपूर्ण पंक्ति (बिट और प्राथमिक कुंजी के अलावा) पूर्ण हैं। लेकिन, इसके लिए एक वास्तविक अच्छा कारण होना चाहिए क्योंकि इससे आपके अपडेट प्रदर्शन पर असर पड़ेगा। उन कॉलम पर इंडेक्स भी मदद करेंगे।

यदि आप लिखने के लिए तेज़ी से लिखते हैं, तो आप एसक्यूएल को आपके लिए कहां उत्पन्न कर सकते हैं। लेकिन, जब तक आप यह बहुत कुछ नहीं करते हैं, यह मेरी राय में समय के लायक नहीं है।

1

टीचिंग करने वाली मछली की बजाय के- देने में आप-मछली जवाब का यहाँ तरह: करने का

एक तरह से यह एक संग्रहीत प्रक्रिया है कि असेंबल और एक गतिशील क्वेरी चलाता है बनाने के द्वारा है।

संग्रहित प्रक्रिया देगा:

  • इनपुट पैरामीटर के रूप में एक तालिका नाम है।
  • विशिष्ट तालिका संरचना के लिए मेटा डेटा सिस्टम टेबल क्वेरी करें।
  • उस तालिका के कॉलम के लिए OR कथन के साथ एक स्ट्रिंग (वास्तविक क्वेरी) को गतिशील रूप से इकट्ठा करें।
  • असेंबली क्वेरी चलाएं और परिणाम लौटाएं।
2

आप कुछ इस तरह का उपयोग कर स्तंभ नाम पा सकते हैं:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = <table_name> 

फिर, मैं एक प्रक्रिया इस का उपयोग करते हुए लिखा है, और है कि होगा अपनी तालिका में प्रविष्टियों और स्तंभ नाम के माध्यम से लूप।

स्रोत: http://codesnippets.joyent.com/posts/show/337

संबंधित मुद्दे

 संबंधित मुद्दे