6

我在 PowerShell 脚本中有以下字符串表达式:

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

模式和表分别解析为 $schema 和 $table 的值。但是,为 ${col.column_name} 提供了一个空字符串。作为字符串替换的一部分,如何在变量的成员中添加点?

4

3 回答 3

9

怎么样:

"select count(*) cnt from $schema.$table where $($col.column_name) is null"
于 2008-10-25T00:12:33.150 回答
4

我认为您遇到的问题主要与语法有关。如果您有一个名为 $foo 的变量,则 ${foo} 引用同一个变量。因此,您的 sql 字符串中的 ${table} 和 ${schema} 引用可以正常工作。

问题在于 ${col.column_name}。您的变量(我假设)称为 $col,并且有一个名为 column_name 的成员。正如罗伯特和史蒂文都在他们的回答中指出的那样,要引用这一点,您应该使用 $($col.column_name)。通常,$(expression) 将被替换为表达式的值。

允许在变量名中使用大括号的原因是变量名中可以包含不寻常的字符。我建议不要使用 ${} 语法(除非您有令人信服的理由),而是将其替换为直接的 $var 变量引用和 $($var.member) 字符串中的成员引用。

于 2008-11-11T21:06:20.663 回答
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
于 2008-10-25T00:20:23.990 回答