请教一个截取SQL字符串正则表达式的写法

一步一个脚印 2008-04-16 02:11:53
有这样一条数据:
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语句
...全文
456 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
一步一个脚印 2008-04-16
  • 打赏
  • 举报
回复
大体思想是正确的但是逻辑上是有纰漏..
split(String regx); 在没有任何匹配时是返回一个String数组 内容就是我们参与匹配的字符串
String str = "8934231341234";
String[] s = str.split("abc");
System.out.println(s==null?"s永不会是Null":s[0]);
一步一个脚印 2008-04-16
  • 打赏
  • 举报
回复
唉.. 没办法.. 只能说明你比较聪明了
eatingbirdmiemies 2008-04-16
  • 打赏
  • 举报
回复
不会正则的人泪奔咩~~``

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]);
}
}
}
}
一步一个脚印 2008-04-16
  • 打赏
  • 举报
回复
回楼上的.. 正则不是干这行的..

查了些资料已经解决.. Pattern.compile("@@.*;",Pattern.DOTALL);
过会我整理完了传上来
大家也可试试
  • 打赏
  • 举报
回复
好家伙,把正则表达式当语法分析工具用啊

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧