java正则匹配sql语句_如何使用JAVA正则表达式从文件中提取SQL文句

如何使用JAVA正则表达式从文件中提取SQL文句

使用JAVA正则表达式,从一个文件中读取SQL文句(SELECT)...

String regex = "((SELECT|select)(.*?);)";

Pattern p = Pattern.compile(regex);

Matcher m = p.matcher(rec);

if (m.find()){

System.out.println(m.group());

}

[Q1][Q2][Q3]的话..可以提取出来,,,可是像[Q4][Q5]中间有改行的话就读取不了..

请哪位高手指点指点....

TEST.TXT文件内容以下所示

解答

[Q1]

SELECT name FROM players GROUP BY name;

[Q2]

SELECT title, runtime ,relyear FROM movies WHERE relyear=2009 AND RUNTIME <=130;

[Q3]

SELECT SUM(runtime) FROM movies;

[Q4]

SELECT name ,title

FROM players, movies

WHERE players.mid=movies.mid

AND name='sibasakikou' AND relyear='2008';

[Q5]

SELECT title, runtime

FROM players, movies

WHERE name

IN (players.mid = movies.mid)

AND name = 'sibasakikou'

HAVING MAX(runtime);

09-12-04  natpgnip 发布

67b0a70febe552c922c54bb8560d6ef6.png

5912cd14618e89c2ab3c1121915a9ca8.png

sql2005应该可以把

sql2000就可以了啊

例如下面返回字符串中的汉字:CREATE   function   chineseRegexReplace

(

@source   varchar(5000),         --原字符串

@regexp   varchar(1000),         --正则表达式

@replace   varchar(1000),       --替换值

@globalReplace   bit   =   0,       --是否是全局替换

@ignoreCase   bit   =   0               --是否忽略大小写

)

returnS   varchar(1000)   AS

begin

declare   @hr   integer

declare   @objRegExp   integer

declare   @result   varchar(5000)

exec   @hr   =   sp_OACreate   'VBScript.RegExp',   @objRegExp   OUTPUT

IF   @hr   <>   0   begin

exec   @hr   =   sp_OADestroy   @objRegExp

return   null

end   exec   @hr   =   sp_OASetProperty   @objRegExp,   'Pattern',   @regexp

IF   @hr   <>   0   begin

exec   @hr   =   sp_OADestroy   @objRegExp

return   null

end   exec   @hr   =   sp_OASetProperty   @objRegExp,   'Global',   @globalReplace

IF   @hr   <>   0   begin

exec   @hr   =   sp_OADestroy   @objRegExp

return   null

end

exec   @hr   =   sp_OASetProperty   @objRegExp,   'IgnoreCase',   @ignoreCase

IF   @hr   <>   0   begin

exec   @hr   =   sp_OADestroy   @objRegExp

return   null

end

exec   @hr   =   sp_OAMethod   @objRegExp,   'Replace',   @result   OUTPUT,   @source,   @replace

IF   @hr   <>   0   begin

exec   @hr   =   sp_OADestroy   @objRegExp

return   null

end   exec   @hr   =   sp_OADestroy   @objRegExp

IF   @hr   <>   0   begin

return   null

end   return   @result

endCREATE FUNCTION Str_GetChineseWords(@OldStr varchar(200))--返回字符串中的汉字

RETURNS  varchar(200)

AS

BEGIN

declare @New varchar(200)

set @New=dbo.chineseRegexReplace(@OldStr,'[^\u3400-\u9FFF]','',1,1)

return @New

END

◆◆

请登录后再发表评论!

◆◆

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值