两种比较常见的方式
(1)用中括号[]转义
WHERE ColumnA LIKE 'aaa[_]bbb' ---
(2)用关键字ESCAPE 转义
WHERE ColumnA LIKE '%aaa/%bbb%' ESCAPE '/'
注:
1)方式2不如1方便,适用面也窄小,清晰度也差。
2)方式0在使用动态SQL,尤其是“嵌套 + 代码生成”的高级应用中,很容易出错
1. || 的作用是连接字符串。如:
字符串常量连接: 'abc'||'def' ;
字符串变量连接: v_variable1 || v_variable2 等。
2.
首先: ' 有两个作用:
1).对字符串定界。如v_sqlstr := 'abcdef'
就界定了一个字符串abcdef‘ 本身不是字符串的一部份。
2). ' 本身作为一个字符,' 是字符串的一部份。
如 :v_sqlstr :='''' 指代字符串' 。 这时,' 需要转义。
begin
dbms_output.put_line('''')
end
/
'
PL/SQL procedure successfully completed.
要表示一个' 字符 , plsql中需要用'' 来表示。
‘’ 相当于 字符 ‘ 。
输出字符a:
dbms_output.put_line('a')
输出字符‘:
dbms_output.put_line('''')
3. 开始的alter前面的'不用转义,
因为它是定界符。
4.我们知道:
alter session set nls_date_language='AMERICAN'
是完整的sql语句,
其中的两个' 在sql 中 ,是定界符,但是到了plsql中,整个sql语句成了一个字符串,所以'成为了两个字符。
字符就需要转义,
所以:
nls_date_language='
在plsql字符串中应该写成:
nls_date_language=''
5. 如果我们做如下置换:
假设:表定界的' 可以用 () 来置换,
表字符的' 可以用 " 来置换,那么:
sql_string 可以写成:
sql_string := (alter session set nls_date_language=")||(AMERICAN)||(")
这样就更好理解了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)