日期:2014-05-17  浏览次数:20816 次

绑定变量中&的转义
我遇到一个问题关于&的转义

select JUL_VAL from MANUL_MTH_KPI_USFADS where MASTR_REGN_CODE = 948 AND MASTR_PLANT_CODE = 8347 AND MASTR_PROD_CATEG_CODE = :AAA
不巧的是,表中有一条这样的数据  "B&R/SC", 就是当:AAA被"B&R/SC" 替换后,SQL会提示输入&R的值

我已经尝试了用 escape '&'不管用
想用replace, substr()这一类的字符串处理函数想把它替换成B||'&'||R/SC也不行,因为,在没替换之间,就已经提示要输入&R的值, 请问各位大侠,有没有什么高明的方法

------解决方案--------------------
先SET DEFINE OFF;关闭这个功能,然后再执行你的查询语句
------解决方案--------------------
来自:http://hi.baidu.com/lyjnd321/blog/item/cc2ff82aaf5a6221d42af182.html
在SQL*Plus中默认的"&"表示替代变量,也就是说,只要在命令中出现该符号,SQL*Plus就会要你输入替代值。这就意味着你 无法将一个含有该符号的字符串输入数据库或赋给变量,如字符串“SQL&Plus”系统会理解为以“SQL”打头的字符串,它会提示你输入替代变 量Plus的值,如果你输入ABC,则最终字符串转化为“SQLABC”。 
set define off 则关闭该功能,“&”将作为普通字符,如上例,最终字符就为“SQL&Plus” 
set define off关闭替代变量功能 
set define on 开启替代变量功能 
set define *  将默认替代变量标志符该为“*”(也可以设为其它字符)