select "A&B" from dual问题现象:提示输入变量b的值问题分析:(自我感觉)
oracle在执行时 优先级:&变量置换 > SQL命令是否正确结束 > 表或视图存在 > 函数 ...如果在&后面加一空格,/,\,~,@....字符时不执行变量置换,但字母不行我现在就要对带有&符号的字符串进行操作的话,有什么好办法吗?我在做一个有海外客户名称的表的SQL查询:条件(where aaa="A&B")
而这个值是JAVA中的一个变量,不能对这个值进行操作,有什么办法能在ORACLE查询中对这个值进行处理?
oracle在执行时 优先级:&变量置换 > SQL命令是否正确结束 > 表或视图存在 > 函数 ...如果在&后面加一空格,/,\,~,@....字符时不执行变量置换,但字母不行我现在就要对带有&符号的字符串进行操作的话,有什么好办法吗?我在做一个有海外客户名称的表的SQL查询:条件(where aaa="A&B")
而这个值是JAVA中的一个变量,不能对这个值进行操作,有什么办法能在ORACLE查询中对这个值进行处理?
oracle已经明确的告诉我们,在条件中,遇到某些特殊符号,则应该进行转意处理.
简单的来说必须 用\& 表示 & ,或者用chr(38)来表示&
A、用转义字符:
SQL> set escape \
然后再&的前面 加上\ 如 \&
B、更简单,关闭这个功能就行了:
SET DEFINE OFF;
在命令窗口用
sql> set define off;
sql> select "A&B" from dual;
输出"A&B"但是在sql查询窗口还是提示变量置换?!我只知道sql查询窗口跟命令窗口走的不是一条路,
命令窗口相当于走的是sqlplus
那sql查询窗口的走的是什么呢?
select 'a&&b' from dual