Regexp将Sql Server TOP语法转换为Postgresql LIMIT语法



我有一个sql server查询,比如:

Select TOP 2 * from customer order by id desc

并希望将其替换为;

Select * from customer order by id desc LIMIT 2

如何使用regex实现这一点?该查询可能具有也包含TOP语句的子查询。基本上,我想用LIMIT代替TOP语句,让查询与Postgresql一起工作

在.NET语法中,简单地说,这看起来像是的(不区分大小写(regex

SELECT TOP (?<t>d+)(?<q>.*?ORDER BY[ a-z]+)

以及的替代品

SELECT ${q} LIMIT ${t}

例如

这是一个非常简单的情况,它不能很好地处理子查询。您可以跳过find-str中ORDER BY的存在。。。

不过,这并不是一件简单的事情,用regex解析编程语言就像试图用它来解析html一样。你可以更多地参与重复的替换和负面的外观广告,以避免与你已经替换的东西相匹配。。但是tbh,如果你在看一个复杂的场景,那么正确地解析SQL可能会更好

最新更新