如何去掉SQL中的注释,其中注释包含了 /***/、//、 --、# 等格式:
例如我们有如下的SQL:
/**aa*/
CREATE TABLE runoob_tbl (
runoob_id bigint, -- aa
runoob_title string, # aa
runoob_author string, /**aa*/
submission_date DATE,
primary key (runoob_id) NOT ENFORCED
) WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://localhost:3306/test', //aaa
'table-name' = 'runoob_tbl', -- aa
'username' = 'root',
'password' = '123',
'driver' = 'com.mysql.jdbc.Driver'
);
那么如何得到下面没有注释的SQL呢?
CREATE TABLE runoob_tbl (
runoob_id bigint,
runoob_title string,
runoob_author string,
submission_date DATE,
primary key (runoob_id) NOT ENFORCED
) WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://localhost:3306/test',
'table-name' = 'runoob_tbl',
'username' = 'root',
'password' = '123',
'driver' = 'com.mysql.jdbc.Driver'
)
解决办法:
Pattern p = Pattern.compile("(?ms)('(?:''|[^'])*')|--.*?$|//.*?$|/\\*.*?\\*/|#.*?$|");
String presult = p.matcher(sql).replaceAll("$1");
System.out.println(presult);