我正在学习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
的任意组合也能正常工作答案 0 :(得分:1)
尝试这样的事情:
$res = ([regex]'(?is)\b(?:from|into|update)\s+(\[?.+\]?\.)?\[?(\[?\w+)\]?').Matches($q)
write-host $res[0].Groups[2].Value