【问题标题】:notepad ++ regex convert query记事本++正则表达式转换查询
【发布时间】:2017-11-02 18:07:18
【问题描述】:

使用 Notepad++ 正则表达式我正在尝试以这种格式转换查询列表

IF NOT EXISTS (SELECT * FROM EMPLOYEE WHERE Name = 'BOB')
BEGIN
        INSERT INTO EMPLOYEE(Name)
        VALUES ('BOB')
END

INSERT INTO EMPLOYEE (Name)
select 'BOB' 
where NOT EXISTS (SELECT * FROM EMPLOYEE WHERE Name = 'BOB')

我可以进行基本的查找和替换。但是,我遇到的问题是去掉文本“BOB”之前的括号,这样我就可以将VALUES ('BOB') 更改为select 'BOB'。如果可能,将IF NOT EXISTS (SELECT * FROM EMPLOYEE WHERE Name = 'BOB') 行移到底部。

【问题讨论】:

标签: sql-server regex sqlite notepad++


【解决方案1】:

使用 Notepad++ 进行正则表达式查找和替换:

找到什么:

IF\s+NOT\s+EXISTS\s+(\(SELECT[\s\S]*?FROM\s+(\w+)\s+WHERE\s+(\w+)\s*=\s*([^\)]+)\))\s+BEGIN[\s\S]*?END

“全部替换”为:

INSERT INTO $2 \($3\)\r\nselect $4\r\nwhere NOT EXISTS $1

【讨论】:

    【解决方案2】:

    Notepad++ 正则表达式查找和替换:

    查找内容:

    (IF)(?<var3>.*?)(\r\n)(BEGIN)(\r\n)(.*?)(?<var1>INSERT .*?)(\r\n)(.*?)(VALUES \(')(?<var2>.*?)('\))(\r\n)(END)
    

    替换为:

    $+{var1}(\n)SELECT '$+{var2}'(\n)WHERE $+{var3}
    

    信息:

    ?&lt;var name&gt;Find what 中的文本块的反向引用变量名称,在 替换为 中使用为 $+{var name}

    【讨论】:

      猜你喜欢
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 2016-07-13
      相关资源
      最近更新 更多