【问题标题】:powershell - get a keyword from query stringpowershell - 从查询字符串中获取关键字
【发布时间】:2018-04-18 17:43:07
【问题描述】:

我正在学习 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]

所以,我想优化这段代码,即使查询包含任何带括号/无括号的表名组合,它也能正常工作

【问题讨论】:

    标签: powershell powershell-4.0


    【解决方案1】:

    试试这样的:

    $res = ([regex]'(?is)\b(?:from|into|update)\s+(\[?.+\]?\.)?\[?(\[?\w+)\]?').Matches($q)
    
    write-host $res[0].Groups[2].Value
    

    【讨论】:

    • 对不起,我没有测试,将索引更改为2
    • 这不适用于[tableName] like - SELECT * FROM [TestDB].[dbo].[Invoice_Details] where Clientname='ABC'
    • 编辑[TestDB].[dbo].[Invoice_Details]
    猜你喜欢
    • 1970-01-01
    • 2014-07-05
    • 2015-11-02
    • 1970-01-01
    • 2011-07-23
    • 2013-05-16
    • 2017-12-09
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多