我在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)。通常,$(表达式)将替换为表达式的值。

在变量名中允许使用大括号的原因是变量的名称中可能包含不常见的字符。我建议不要使用$ {}语法(除非你有令人信服的理由),并将其替换为变量的直接$ var引用,并将字符串中的成员引用替换为$($ 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