select "A&B" from dual问题现象:提示输入变量b的值问题分析:(自我感觉)
oracle在执行时 优先级:&变量置换 > SQL命令是否正确结束 > 表或视图存在 > 函数 ...如果在&后面加一空格,/,\,~,@....字符时不执行变量置换,但字母不行我现在就要对带有&符号的字符串进行操作的话,有什么好办法吗?我在做一个有海外客户名称的表的SQL查询:条件(where aaa="A&B")
而这个值是JAVA中的一个变量,不能对这个值进行操作,有什么办法能在ORACLE查询中对这个值进行处理?

解决方案 »

  1.   

    不处理这个条件变量,我认为是不可行的.你必须去处理.
    oracle已经明确的告诉我们,在条件中,遇到某些特殊符号,则应该进行转意处理.
    简单的来说必须 用\& 表示 &  ,或者用chr(38)来表示&
      

  2.   

    你所说的应该是在sqlplus之类的工具中出现的问题吧。可以在sqlplus中执行set define off,这样就不会提示你输入变量的值了。
      

  3.   

     要去掉这个功能有两种实现方法:
    A、用转义字符:
    SQL> set escape \  
    然后再&的前面 加上\ 如 \&
    B、更简单,关闭这个功能就行了:
    SET DEFINE OFF;
      

  4.   

    我使用PL/SQL
    在命令窗口用
    sql> set define off;
    sql> select "A&B" from dual;
    输出"A&B"但是在sql查询窗口还是提示变量置换?!我只知道sql查询窗口跟命令窗口走的不是一条路,
    命令窗口相当于走的是sqlplus
    那sql查询窗口的走的是什么呢?
      

  5.   

    那是因为查询窗口和命令窗口是两个session,而set define off仅仅对本session起作用。你可以在查询窗口执行
    select 'a&&b' from dual