powershell - 从查询字符串中获取关键字
powershell - get a keyword from query string
我正在学习 PowerShell 脚本并想从 SQL 查询字符串中提取 tableName。例如,我有这个查询 -
$q = "SELECT * FROM [TestDB].[dbo].Invoice_Details where Clientname='ABC'"
我想提取 table 名称的地方,即它应该输出这个 - Invoice_Details
目前,我正在使用以下工作代码执行此操作 -
$q1 = $q -split '\[dbo\]\.'
$q2 = $q1[1] -split ' where '
write-host $q2[0] #here I get it right (Invoice_Details)
但是,有时查询可能/可能没有括号名称,例如 - [TestDB].[dbo]
。
所以,我想优化此代码,即使查询包含括号/无括号 tableNames
的任何组合,它也能正常工作
尝试这样的事情:
$res = ([regex]'(?is)\b(?:from|into|update)\s+(\[?.+\]?\.)?\[?(\[?\w+)\]?').Matches($q)
write-host $res[0].Groups[2].Value
我正在学习 PowerShell 脚本并想从 SQL 查询字符串中提取 tableName。例如,我有这个查询 -
$q = "SELECT * FROM [TestDB].[dbo].Invoice_Details where Clientname='ABC'"
我想提取 table 名称的地方,即它应该输出这个 - Invoice_Details
目前,我正在使用以下工作代码执行此操作 -
$q1 = $q -split '\[dbo\]\.'
$q2 = $q1[1] -split ' where '
write-host $q2[0] #here I get it right (Invoice_Details)
但是,有时查询可能/可能没有括号名称,例如 - [TestDB].[dbo]
。
所以,我想优化此代码,即使查询包含括号/无括号 tableNames
的任何组合,它也能正常工作尝试这样的事情:
$res = ([regex]'(?is)\b(?:from|into|update)\s+(\[?.+\]?\.)?\[?(\[?\w+)\]?').Matches($q)
write-host $res[0].Groups[2].Value