2008-10-25 16 views
6

में स्ट्रिंग के भीतर चर के स्थानापन्न सदस्य मैं एक PowerShell स्क्रिप्ट में निम्नलिखित स्ट्रिंग अभिव्यक्ति की है। हालांकि, $ {col.column_name} के लिए एक खाली स्ट्रिंग की आपूर्ति की जाती है। स्ट्रिंग प्रतिस्थापन के हिस्से के रूप में मैं एक चर के सदस्य में कैसे जा सकता हूं?Powershell

उत्तर

9

कैसे के बारे में:

"select count(*) cnt from $schema.$table where $($col.column_name) is null" 
3

एक तरीका यह होगा:

"select count(*) cnt from $schema.$table where $($col.column_name) is null" 

एक अन्य विकल्प

"select count(*) cnt from {0}.{1} where {2} is null" -f $schema, $table, $col.column_name 
4

मुझे लगता है कि आपको हो रही समस्या मुख्य रूप से वाक्य रचना से संबंधित है किया जाएगा। यदि आपके पास $ foo नामक एक चर है, तो $ {foo} समान वैरिएबल का संदर्भ देता है। तो, आपके एसक्यूएल स्ट्रिंग में $ {table} और $ {schema} संदर्भ ठीक काम करते हैं।

समस्या $ {col.column_name} के साथ है। आपका वैरिएबल (मुझे लगता है) को $ col कहा जाता है, और इसमें स्तंभ_नाम नाम का सदस्य होता है। रॉबर्ट और स्टीवन दोनों अपने उत्तरों में इंगित करते हैं, इसका संदर्भ देने के लिए, आपको $ ($ col.column_name) का उपयोग करना चाहिए। आम तौर पर, अभिव्यक्ति के मूल्य के साथ $ (अभिव्यक्ति) प्रतिस्थापित किया जाएगा।

परिवर्तनीय नामों में ब्रेसिज़ को अनुमति देने का कारण यह है कि चर के नाम उनके नामों में असामान्य वर्ण हो सकते हैं। मैं $ {} वाक्यविन्यास का उपयोग न करने की अनुशंसा करता हूं (जब तक आपके पास कोई अनिवार्य कारण न हो), और स्ट्रिंग्स में सदस्य संदर्भों के लिए चर और $ ($ var.member) के लिए इसे सीधे $ var संदर्भों के साथ प्रतिस्थापित करें।