1

私はREGEXが初めてなので、以下のことを解決できません。

そして、私がそれを学ぶことができるように、いくつかのパーサー関連のリンクを共有してください。

SQL ステートメントの下の int を解決する際に問題に直面しています。前の INPUT にさらに行が追加されました。

これを解決するのを手伝ってください。

DECLARE
numerator   NUMBER;
BEGIN
SELECT x, y INTO numerator, denominator FROM result_table, s_Table
WHERE sample_id = 8;
the_ratio := numerator/denominator;
IF the_ratio > lower_limit THEN
INSERT INTO 
ratio VALUES (table, coloum);
ELSE
INSERT INTO onemoreTable VALUES (table, -1);
END IF;
COMMIT;
delete from     --some comment
xyz where id=17;
EXCEPTION
WHEN ZERO_DIVIDE THEN
INSERT INTO ratio VALUES (table, 0);
COMMIT;
WHEN OTHERS THEN
ROLLBACK;
END;

出力:

SELECT from: result_table, s_Table
INSERT into: ratio
INSERT into: onemoreTable
DELETE from: xyz
INSERT into: ratio
4

1 に答える 1

1

正規表現を使用した Perl ベースのソリューションは次のとおりです。

$input =~s/--.*?\n//g; # delete the comments.
$input =~s/\s+/ /g; # replace multiple white space with single space.
while($input=~m/((?:insert into)|(?:delete from)) (\w+)/ig) { 
        print "$1 : $2\n";    
}

SQL を解析する正しい方法は、パーサーを使用し、正規表現を使用しないことです。

于 2010-08-25T06:08:24.373 に答える