Pie*_*ler 2 regex sql postgresql
我目前正在开发一个正则表达式来将 sql 语法转换为 Postgres 语法。我正在使用 geany 来替换文本。目前,我尝试更改的语法是:
INSERT IGNORE INTO item_question_ (question_fk_,item_fk_) VALUES(1002,162);
Run Code Online (Sandbox Code Playgroud)
进入 :
INSERT INTO item_question_ (question_fk_,item_fk_) VALUES (1002,151)
WHERE NOT EXISTS
(SELECT 1 FROM item_questionnaire_ WHERE question_fk_=1002 AND item_fk_ = 151)
Run Code Online (Sandbox Code Playgroud)
我很接近,但绝对还不够。我有这个正则表达式:
(INSERT IGNORE INTO (.*)_ (.*) VALUES(.*);) //Find information
INSERT INTO \2_ \3 VALUES \4 WHERE NOT EXISTS (SELECT 1 FROM \2_ WHERE )// Transform information
Run Code Online (Sandbox Code Playgroud)
事实上,我遗漏了最重要的部分:条款WHERE。
我如何获取该值question_fk_,item_fk_并1002,151构建我的 where 子句?
附加说明:Postgres 版本低于 9.5。我不能使用ON CONFLICT IGNORE