سؤال

ولدي التعبير السلسلة التالية في برنامج نصي بوويرشيل:

"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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top