我正在搜索SQL脚本(通过PowerShell)以确保它们未使用表变量。这是我的简单支票:
$Script = $Script.ToLower()
if ($Script -Match "declare @* table"){
#do stuff
}
因此,如果脚本包含:
declare @mytable table(
blah blah
)
它会识别并执行操作。
我在中间尝试了@*
和其他一些通配符选项,因为我不知道表名。我可以在要搜索的字符串中间使用通配符吗?
答案 0 :(得分:1)
您可以使用-like
代替-match
,以使通配符表现出所需的效果。
$script = @"
declare @mytable table(
blah blah
)
"@
if ($script -like "declare @* table*"){
$true
} else {
$false
}
答案 1 :(得分:0)
-match
运算符使用regular expressions (regex)评估事物。匹配字符串中的@*
将匹配0个或更多@
个字符,而不是@
及其后面的任何字符。
-like
运算符使用您习惯的更简单的通配符表达式。尝试切换到该位置。
这是matching operators上的官方文档,以获取更多信息。
答案 2 :(得分:0)
在-match的正则表达式中,您会说.*
而不是*
:
"declare @mytable table(" -match "declare @.* table"
True