如何使用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 发布
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
◆◆
请登录后再发表评论!
◆◆