有这样一条数据:
String str = "~~UPDATE SY_TABLE_FIELD SET FIELD_DEFAULT='王' where FIELD_CODE='XYHY_QYDD' AND TABLE_CODE='EQ_XYHY';@@ALTER TABLE EQ_XYHY MODIFY(XYHY_QYDD DEFAULT '王');~~UPDATE EQ_XYHY SET XYHY_HYBH='测试数据',XYHY_QUAN=30 WHERE XYHY_CODE='00000000000000000603'";
我要得到两部分sql语句DML/DDL
@@字符用于表示DDL语句
~~用于表示DML语句
------解决方案--------------------
好家伙,把正则表达式当语法分析工具用啊
------解决方案--------------------
不会正则的人泪奔咩~~``
- Java code
public void ybygjy(String str){ List<String> dml = new ArrayList<String>(); List<String> ddl = new ArrayList<String>(); String[] sqlArray = str.split("~~"); for(String s : sqlArray) { String[] sql = s.split("@@"); if(sql!=null && sql.length>0) { if( sql[0]!=null && !"".equals(sql[0]) ) { dml.add(sql[0]); } } else { break; } for(int i=1;i<sql.length;i++) { if( sql[i]!=null && !"".equals(sql[i]) ) { ddl.add(sql[i]); } } }}