如何编写正则表达式来替换
VALUES ('some text')
带
SELECT * FROM (SELECT 'some text') AS tmp...
基本上,我有一个输入文件,有多个 Insert 语句。我想使用Regex将每个insert语句转换为 IF NOT EXISTS然后INSERT 语句(并在MySQL中运行)。
所以,这是我的意见:
INSERT INTO table_listnames (name, address, tele) VALUES ('Rupert', 'Somewhere', '022')
这是所需的输出:
INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'Rupert', 'Somewhere', '022') AS tmp
WHERE NOT EXISTS (
SELECT VersionNumber FROM ReleaseInfo WHERE VersionNumber = '1.0.0.1'
) LIMIT 1;
答案 0 :(得分:2)
您可以使用
VALUES\s*\(([^()]*)\)
并将其替换为
SELECT * FROM (SELECT $1) AS tmp
<小时/>
细分,这说:
VALUES # match VALUES
\s*\( # whitespaces, optionally, (
([^()]*) # capture anything inside ()
\s* # another whitespaces, optionally
\) # )