gpt4 book ai didi

regex - 正则表达式、SQL替换

转载 作者:行者123 更新时间:2023-12-04 06:07:22 25 4
gpt4 key购买 nike

我有一个包含大约 1900 个 SQL stored procedures 的文本文件.我的老板告诉我,我必须用表变量替换所有临时表!

我给你举个例子。我必须更换

CREATE TABLE #OneTable (contact_id numeric(10,0) null, contact char(80) null)



DECLARE @OneTable TABLE (contact_id numeric(10,0) null, contact char(80) null)

如您所见,困难的部分是添加关键字 在表名之后。

如何构建可以解决此问题的正则表达式?

更多例子

CREATE TABLE #accounts (guest_id numeric(10,0) null, ... state char(30) null)

我用 Vim找到一个 GUI 选择。我输入

CREATE TABLE #\(.\{-1,} *\)(

我得到:

Pattern not found \V\cCREATE TABLE #\(.\{-1,} *\)(

善意的编辑请注意:以“CREATE TABLE”开头的行应该保留在原处。这是 正文 , 不是 SQL 代码,所以保留格式!

最佳答案

在 Notepad++ 中,您可以尝试这些查找/替换模式:

查找: CREATE TABLE #(.+)(.+) part 表示至少匹配任何字符一次,括号用于对该部分进行分组。

替换: DECLARE @\1 TABLE\1这是我们在查找模式中使用的第一个(也是唯一一个)分组的反向引用。

请注意,查找模式是贪婪的,但如果您的所有表声明都在自己的行上,则应该可以工作,如您的示例所示。否则,您可以尝试修改它以允许它匹配任何非空格、回车或换行符的字符。

这样的模式看起来像这样:CREATE TABLE #([^\s\r\n]+)
在这种模式中 [ ... ]是一个字符类,并放置一个 ^在它的最开始使它成为一个否定字符类,以便在遇到这些字符时匹配停止。 \s表示空白字符,\r是回车,和\n是换行符。

关于regex - 正则表达式、SQL替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com