不要告诉我用\n或\r,网上都这么说,用了你就知道,这不行!
\x0a 也不行,实践中不行.
目前是用 [^\w\t ],来临时匹配空格,但是很郁闷,不严谨
求高手回答!

解决方案 »

  1.   

    楼主试试这样行不
     SELECT   REPLACE (
                REGEXP_REPLACE (
                   REPLACE ('test  ' || CHR (13) || CHR (10) || 'string',
                            ' ',
                            '[blank]'),
                   '[[:space:]]*',
                   ''
                ),
                '[blank]',
                ' '
             )
      FROM   DUAL
      

  2.   

    这是找回车的
    SELECT   REPLACE ('test  ' || CHR (13) || CHR (10) || 'string',
                      ' ',
                      '[blank]')
                orig,
             REGEXP_INSTR (
                REPLACE ('test  ' || CHR (13) || CHR (10) || 'string',
                         ' ',
                         '[blank]'),
                '[[:space:]]+',
                1
             )
                result
      FROM   DUAL
      

  3.   

    谢谢Evan,不过这个方法不好用,1显得臃肿,而计算结果不准去,还得去掉额外的[blank]长度 ,还不如.* 来的简洁...declare
       test_str varchar2(2000):='NewMexico'||CHR(13) || CHR(10)||'abc';
       out_str varchar2(1000);
    begin 
      out_str:= length(REGEXP_substr (test_str,'.*'))+1
      DBMS_OUTPUT.PUT_LINE(out_str);  
    end;
      

  4.   


    replace('字段',chr(10),'$')
    --把回车换行 替换成 $ 后再匹配 $.  这里的$只是随便举例,你只需要弄一个你业务中出现不了的字符就行了。
      

  5.   

    .*是匹配所有字符哦,肯定不行的. [blank]是让你换成其他字符的:如'^'
      

  6.   

    replace('字段',chr(37),'$')
    --把回车换行 替换成 $ 后再匹配 $.  这里的$只是随便举例,你只需要弄一个你业务中出现不了的字符就行了。
      

  7.   

    我的意思是,你加一步先讲回车替换成其他字符的过程,然后再在这个替换后的基础上匹配替换后的字符。如:replace('字段',chr(10),'$') 把回车替换成$,然后再对这个结果用正则表达式去匹配$就行了。
    $是我随便举得例子,你找一个你业务上没有的字符,替换一下就能解决你的问题了,有时候曲线救国的路子是可以尝试的。