SELECT * FROM emp WHERE ename LIKE '%a_%' ESCAPE 'a';ENAME
------------------------------
FL_MARY
其中ESCAPE将'a'进行转义,但我不知道是什么意思..._代表一个字符,%代表0到多个字符.如果_%一起使用那么就要用ESCAPE转义就是不理解结果为什么会是那样?麻烦高手给解释解释 谢谢!

解决方案 »

  1.   

    Oracle中ESCAPE关键字用法 
    定义:escape关键字经常用于使某些特殊字符,如通配符:'%','_'转义为它们原 来的字符的意义,被定义的转义字符通常使用'\',但是也可以使用其他的符号。 
      

  2.   

    以上面的例子来说明, 如果要匹配FL_MARY中的_号,要用LIKE '%_%',但是在Oracle中, LIKE内的'_'被看作是一个匹配单个字符的匹配符,而不是一个象'x','y','MM'这类的正常字符,要想把'_'转为正常字符,只能用转义符号,转义符号用ESCAPE定义,可以是'a',但通常用'\',因为unix,c语言及perl语言等都用'\'做转义字符,所以上面的语句也可以写为SELECT * FROM EMP WHERE ename LIKE '%\_%' ESCAPE '\';
      

  3.   

     _代表一个字符,%代表0到多个字符
    ESCAPE主要是将_和%转义,是_就是代表字符_,而不是代表一个字符
    %就是代表字符%,而不是代表0到多个字符