我需要创建一个正则表达式,以便从动态SQL创建表语句中删除最后一个逗号。我的查询基本上获取所有列名和表名并返回如下内容:
CREATE TABLE table_name ( column1 DATATYPE(1), column2 DATATYPE(20),);
我在data_length规范后面将逗号连接起来,因为在后面删除最后一个逗号会更容易。我使用REGEXP_REPLACE
来做到这一点,但是由于Oracle不支持向前看或向后看,那么我不能使用这个正常工作的表达式:
,(?=[);])
所以我得到了另一个表达式:
();)?,
,但它不够精确,因为它占用了");"之前的所有逗号,我需要它来获取create table语句中的最后一个逗号。
用);
代替,);
怎么样?这将有效地删除右括号前的最后一个逗号。