比如:http://www.csdn.net/point.aspx
如何获得字符串“.csdn.net”

解决方案 »

  1.   


    SQL> select substr('http://www.csdn.net/point.aspx',12,8 ) from dual;SUBSTR('HTTP://WWW.CSDN.NET/PO
    ----------------------------------------------------------------
    csdn.netSQL> 
      

  2.   


      select substr(str,instr(str,'w',1,3)+1,(instr(str,'/',1,3)-instr(str,'/',1,2)-4)) from dual 
      

  3.   


    --做了个取二级域名的函数,请LZ参考一下:SQL> CREATE OR REPLACE FUNCTION f_twodomain(http0 IN varchar2) RETURN varchar2 IS
      2  v_str_twodomain varchar2(80);
      3  begin
      4  For i in 12..100
      5  Loop
      6  if ascii(substr(http0,i,1))=47 then
      7  return v_str_twodomain;
      8  end if;
      9  v_str_twodomain:=v_str_twodomain || substr(http0,i,1);
     10  End loop;
     11  end;
     12  /Function createdSQL> select f_twodomain('http://www.csdn.net/point.aspx') from dual;F_TWODOMAIN('HTTP://WWW.CSDN.N
    --------------------------------------------------------------------------------
    csdn.netSQL> 
      

  4.   

    10g的方法:
    SELECT RTRIM(LTRIM(REGEXP_SUBSTR('http://www.csdn.net/point.aspx', '\..+/'),
                       '.'),
                 '/')
      FROM DUAL;
      

  5.   

    SELECT substr('http://www.csdn.net/point.aspx',
                  instr('http://www.csdn.net/point.aspx', '.', 1),
                  instr('http://www.csdn.net/point.aspx', '/', 1, 3) -
                  instr('http://www.csdn.net/point.aspx', '.', 1))
      FROM dual;
      

  6.   

    两种方法:
    1.5楼的正则,这个比较酷.
    2.用substr+instr,无非就是第一个.和第三个/之间的串.
      

  7.   

    oracledbalgtu
    这个是对的,谢谢了,不过没有看明白。
    大家帮忙解释一下吧,
    还有,我想或者的是“.csdn.net” 就是前面还有一个点。。
    谢谢
      

  8.   

    SELECT RTRIM(REGEXP_SUBSTR('http://www.csdn.net/point.aspx', '\..+/'),
                 '/')
      FROM DUAL;
      

  9.   

    谢谢,原来正则表达式这么厉害呀。看来我要好好学学这个了,谢谢oracledbalgtu !不愧是oracle senior dba~~~