最近工作中遇到一个需求,需要更新Oracle数据库中所有表的一个字段“flag”为“I”,语句为:
update table_name set flag = 'I'
“I”作为字符串,所以语句中I需要加上单引号。
由于数据库中有多张表,我不想一条一条的语句写,希望能够通过sql语句直接生成所有的语句,所以写了如下sql:
select 'update ' || table_name || ' set flag = 'I'' || ';' from user_tables
这个时候运行,“报错
之前写了篇文章《Oracle转义字符》,说到了Oracle中单引号“’”的转义字符是单引号“’”,那么其他的特殊字符的转义字符又是什么呢,如模糊查询的占位符“%”,“_”等。
经过测试,在Oracle中不能再使用单引号“’”来转义“%”,“_”了,而是用反斜杠“”,不仅如此,还要声明反斜杠“”是转义字符。
假设表为tb,字段为col,要在col中查询包含“%”或“_”字符的字段,sql如下:
– Oracle
select * from tb where col like