عضو بديل للمتغير ضمن سلسلة في بوويرشيل
-
04-07-2019 - |
سؤال
ولدي التعبير السلسلة التالية في برنامج نصي بوويرشيل:
"select count(*) cnt from ${schema}.${table} where ${col.column_name} is null"
ومخطط وتصميم جدول لقيم مخطط $ والجدول $، على التوالي. ومع ذلك، يتم تزويد سلسلة فارغة ل$ {col.column_name}. كيف يمكنني نقطة في عضو متغير كجزء من إجراء تبديل سلسلة؟
المحلول
وماذا عن:
"select count(*) cnt from $schema.$table where $($col.column_name) is null"
نصائح أخرى
وأعتقد أن المشكلة كنت تواجه بشكل رئيسي في بناء الجملة ذات الصلة. إذا كان لديك متغير اسمه $ فو، $ {فو} يحيل الى نفس المتغير. لذا، فإن $ {المائدة} و$ {مخطط} المراجع في عمل سلسلة SQL الخاصة بك يرام.
والمسألة هي مع $ {col.column_name}. ويسمى المتغير الخاص بك (أفترض) $ العقيد، وله اسمه عضو COLUMN_NAME. كما روبرت وستيفن كلا تبين في إجاباتهم، للإشارة إلى هذا، يجب عليك استخدام $ ($ col.column_name). بشكل عام، سيتم استبدال $ (التعبير) مع قيمة التعبير.
والسبب في السماح الأقواس في أسماء المتغيرات هو ذلك أن المتغيرات يمكن أن يكون أحرف غير عادية في أسمائها. أوصي بعدم استخدام بناء الجملة $ {} (إلا إذا كان لديك سبب مقنع)، واستبدالها التوالي $ المراجع فار للمتغيرات و$ ($ var.member) للحصول على مراجع عضوا في السلاسل.
وطريقة واحدة ستكون كما يلي:
"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