दिलचस्प पोस्ट
मैं IntelliJ IDEA डिफ़ॉल्ट JDK कैसे बदल सकता हूँ? MySQL तालिका में varchar लंबाई का महत्व मुझे 'div' के बजाय 'ली' का उपयोग क्यों करना चाहिए? मैं एन्क्रिप्शन कुंजी को जावा में कैसे सुरक्षित रूप से संग्रहीत कर सकता हूं? जावास्क्रिप्ट में वैश्विक चर से कैसे बचें? एएम / पीएम मार्कर के साथ दिनांक टाइम-स्ट्रिंग पार्स करने में असमर्थ भंडार पैटर्न, पोको, और व्यापारिक संस्थाएं क्या कोई आईओएस दृश्य पूछने का कोई तरीका है जिसमें इसके बच्चों की पहली प्रतिक्रिया स्थिति है? PHP में RegexIterator का उपयोग कैसे करें जावा EE डेवलपर्स के लिए ग्रहण कैसे अपग्रेड करें? एक फ्लेक्सबॉक्स के अंदर पाठ को कैसे खड़ी करना है? यूनिकोड स्वरूपित स्ट्रिंग्स से विराम चिह्न निकालें AddTextChangedListener के साथ जोड़े गए सभी श्रोताओं को कैसे हटाएं Std :: string :: c_str () जीवनकाल क्या है? जांचें कि क्या स्ट्रिंग में नंबर शामिल हैं जावा

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

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

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

Solutions Collecting From Web of "चर स्तंभ नामों के साथ डायनामिक अपडेट स्टेटमेंट"

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

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)