我正在编写一个可以执行不同SQL语句的应用程序(用户将这些语句指定为一个字符串值)。我在用着 ”;”作为语句之间的分隔符(一次用户可以执行许多DML语句)。但是在DML语句中,可以有一个varchar值“;”内。替换符号的正则表达式
insert into A values(1, 'sda;asdad');
insert into A values(2, 'asdsa');
我的第一个想法是使用String#split(String regex)
。但我不知道如何创建一个正则表达式,这将有助于仅由那些不在varchars中的分号分割。你能提出一个建议吗?或者有另一种解决方法?
这是一个好主意,但它会好一些用户不知道有关分号必须进行转义,所以他/她必须有输入SQL字符串就像在Oracle SQL Developer中或PL/SQL开发人员 – maks
如果没有字符转义,你将基本上开始编写一个解析器。检查字符串文本中是否出现分号是非平凡的。 –