我有一个sql语句:
uPdate emp set emp_note='I am set to this ' where emp_name='John';
我想用大写替换 oracle 特定的语句,所以我执行以下操作:
+89 $line =~ s/ where / WHERE /ig;
+90 $line =~ s/ set / SET /g;
+91 $line =~ s/^select/SELECT/ig;
+92 $line =~ s/^update/UPDATE/ig;
+93 $line =~ s/^delete/DELETE/ig;
+94 $line =~ s/^insert/INSERT/ig;
+95 $line =~ s/ and / AND /g;
+96 $line =~ s/ from / FROM /g;
+97 $line =~ s/ in / IN /g;
以上还替换了作为值的文本(我设置为这个)。例如,上面的语句将呈现为:
UPDATE emp SET emp_note='I am SET to this ' WHERE emp_name='John';
如何避免将 perl 设置为仅替换关键字而不是 SQL 语句中的值?
问题还在于我不能使用 perl 可用的任何 SQL 包,所以我必须使用普通的旧正则表达式方式。