没有问题啊。
11:21:56 SQL> select * from emp where ename like 'SM\%' escape '\';未选定行已用时间:  00: 00: 00.15
11:22:07 SQL> select 1 from dual where 'SM%' like 'SM\%' escape '\';         1
----------
         1已用时间:  00: 00: 00.31
11:22:40 SQL>

解决方案 »

  1.   

    如果是两个\\,
    11:22:40 SQL> select * from emp where ename like 'SM\%' escape '\\';
    select * from emp where ename like 'SM\%' escape '\\'
                                                     *
    ERROR 位于第 1 行:
    ORA-01425: 换码符必须是长度为 1 的字符串
    已用时间:  00: 00: 00.47
    11:28:52 SQL> 正好跟楼上说的情况相反。
      

  2.   

    这个不清楚。
    执行一下
    select length('\'),lengthb('\') from dual;看结果是否都是1。
      

  3.   

    SQL> insert into a (b) values ('aaa%');1 row created.SQL>  select * from a where b like 'aaa\%' escape '\'
      2  ;A    B
    ---- ----------
         aaa%SQL>
      

  4.   

    select * from v$nls_parameters ;
    把你的字符集和语言贴出来看看是什么?
      

  5.   

    再用sys用户登陆 执行 select * from props$ 看看数据库用的什么字符集,语言。
      

  6.   

    select * from v$nls_parameters;PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_LANGUAGE
    JAPANESENLS_TERRITORY
    JAPANNLS_CURRENCY
    \
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_ISO_CURRENCY
    JAPANNLS_NUMERIC_CHARACTERS
    .,NLS_CALENDAR
    GREGORIAN
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_DATE_FORMAT
    RR-MM-DDNLS_DATE_LANGUAGE
    JAPANESENLS_CHARACTERSET
    JA16SJIS
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_SORT
    BINARYNLS_TIME_FORMAT
    HH24:MI:SSXFFNLS_TIMESTAMP_FORMAT
    RR-MM-DD HH24:MI:SSXFF
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_TIME_TZ_FORMAT
    HH24:MI:SSXFF TZRNLS_TIMESTAMP_TZ_FORMAT
    RR-MM-DD HH24:MI:SSXFF TZRNLS_DUAL_CURRENCY
    \
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_NCHAR_CHARACTERSET
    AL16UTF16NLS_COMP
    BINARYNLS_LENGTH_SEMANTICS
    BYTE
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_NCHAR_CONV_EXCP
    FALSE
      

  7.   

    你用的Oracle是什么版本
    Oracle 从9i开始才在like语句中支持escape的
      

  8.   

    9.2.0.1.0版本
    如果escape后的字符串长度为2位,那我这边就可以正常运行了
    可是这是不正常的吧?