powershell - 从查询字符串中获取关键字

时间:2018-04-18 07:09:40

标签: powershell powershell-v4.0

我正在学习PowerShell脚本和&想从SQL查询字符串中提取tableName。例如,我有这个查询 -

$q = "SELECT * FROM [TestDB].[dbo].Invoice_Details where Clientname='ABC'"

我要提取表名,即它应该输出 - Invoice_Details

目前,我正在使用以下工作代码 -

$q1 = $q -split '\[dbo\]\.'
$q2 = $q1[1] -split ' where '
write-host $q2[0]              #here I get it right (Invoice_Details)

但是,有时查询可能/可能没有括号中的名称 - [TestDB].[dbo]

所以,我希望优化此代码,以便即使查询包含bracketed / bracketless tableNames

的任意组合也能正常工作

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

$res = ([regex]'(?is)\b(?:from|into|update)\s+(\[?.+\]?\.)?\[?(\[?\w+)\]?').Matches($q)

write-host $res[0].Groups[2].Value