日期:2014-05-20  浏览次数:20813 次

请教一个截取SQL字符串正则表达式的写法
有这样一条数据:
 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]);
      }
    }
  }
}