質問

PowerShellスクリプトに次の文字列式があります:

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

スキーマとテーブルは、それぞれ$ schemaと$ tableの値に解決されます。ただし、$ {col.column_name}には空の文字列が提供されます。文字列置換の一部として変数のメンバーにドットを挿入するにはどうすればよいですか?

役に立ちましたか?

解決

方法:

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

他のヒント

あなたが抱えている問題は主に構文に関連していると思います。 $ fooという名前の変数がある場合、$ {foo}は同じ変数を参照します。したがって、SQL文字列の$ {table}および$ {schema}参照は問題なく機能します。

問題は$ {col.column_name}にあります。あなたの変数(私は推測します)は$ colと呼ばれ、column_nameという名前のメンバーがいます。 RobertとStevenの両方が回答で示しているように、これを参照するには、$($ col.column_name)を使用する必要があります。一般的に、$(expression)は式の値に置き換えられます。

変数名に中括弧を許可する理由は、変数の名前に異常な文字が含まれることがあるためです。説得力のある理由がない限り、$ {}構文を使用せず、変数の場合はストレートな$ var参照、文字列のメンバー参照の場合は$($ var.member)に置き換えることをお勧めします。

1つの方法は次のとおりです。

"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