दिलचस्प पोस्ट
मानव-पठनीय स्ट्रिंग के लिए फ़ाइल आकार को बाइट में परिवर्तित करना XDocument के लिए डिफ़ॉल्ट XML नामस्थान कैसे सेट करें माइक्रोसॉफ्ट बीओटी फ्रेमवर्क में संदेशों के प्रवाह को बदलना Groovy का उपयोग करते हुए गुण फ़ाइल से मूल्य प्राप्त करें एचटीएमएल बॉडी के साथ मेल टू एंड्रॉइड में सिंगलटन्स बनाम एप्लिकेशन प्रसंग? GitHub पर एक प्रतिबद्ध संदेश की खोज कैसे करें? उप-निर्देशिकाओं को संरक्षित करते समय एक जीआईटी रिपॉजिटरी को कैसे विभाजित किया जाए? क्या वास्तव में एसटीएल में एक डेक है? `Git add 'और` git add -u` के बीच अंतर क्या है? आप विंडो को कैसे स्थानांतरित होने से रोकते हैं? कैसे विकल्प मेनू प्रोग्राम को खोलने के लिए? फ़ोटोशॉप को दो छवियों को एक साथ कैसे मिलाया जाता है? StackOverflow के इनपुट टैग की तरह jQuery के स्वत: पूर्ण टैगिंग प्लग-इन? जैक्स-आरएस कार्यान्वयन के बिना जर्सी को वेब। एक्सएमएल के बिना कैसे इस्तेमाल किया जाए?

चर स्तंभ नामों के साथ डायनामिक अपडेट स्टेटमेंट

हम कई एसक्यूएल सर्वर डेटाबेस में एक अद्यतन करने के लिए एक निश्चित तालिका में सभी नल मूल्यों को बदलने के बजाय शून्य के बजाय खाली स्ट्रिंग करने के लिए देख रहे हैं। हम संभावित रूप से सैकड़ों डाटाबेस में ऐसा करने जा रहे हैं। तालिका का नाम हमेशा एक जैसा ही होता है, लेकिन कॉलम के नाम वेरिएबल हैं जिस पर फ्रंट-एंड एप्लिकेशन को कॉन्फ़िगर किया गया है (नहीं न्यायाधीश … मैंने यह सिस्टम नहीं बनाया है)।

क्या कॉलम नाम को समय से पहले जानने के बिना इन सभी कॉलमों पर कोई अपडेट करने का कोई तरीका है?

वेब के समाधान से एकत्रित समाधान "चर स्तंभ नामों के साथ डायनामिक अपडेट स्टेटमेंट"

आप कॉलम के नाम को गतिशील एसक्यूएल में पास कर सकते हैं:

declare @sql nvarchar (1000); set @sql = N'update table set ' + @column_name + '= '''''; exec sp_executesql @sql; 

आप sys.columns तालिका में देख सकते हैं और तालिका नाम या ऑब्जेक्ट_आईडी में शामिल हो सकते हैं।

  DECLARE @OBJ_ID INT SELECT @OBJ_ID = OBJECT_ID FROM SYS.tables WHERE name = 'YOURTABLE' SELECT * FROM SYS.columns WHERE OBJECT_ID = @OBJ_ID 

आप sys.column क्वेरी से name फ़ील्ड का उपयोग आधार पर अपडेट करने के लिए कर सकते हैं।

यह मानते हुए कि आप केवल varchar / char प्रकार के सभी कॉलम चाहते हैं (या जो भी आप की आवश्यकता होती है, उसे टाइप फ़िल्टर बदलें):

 DECLARE @tableName varchar(10) SET @tableName = 'yourtablenamehere' DECLARE @sql VARCHAR(MAX) SET @sql = '' SELECT @sql = @sql + 'UPDATE ' + @tableName + ' SET ' + c.name + ' = '''' WHERE ' + c.name + ' IS NULL ;' FROM sys.columns c INNER JOIN sys.tables t ON c.object_id = t.object_id INNER JOIN sys.types y ON c.system_type_id = y.system_type_id WHERE t.name = @tableName AND y.name IN ('varchar', 'nvarchar', 'char', 'nchar') EXEC (@sql)