如:select * from testtable where hostname like 'ip地址'这个ip地址通配符如何写?谢谢

解决方案 »

  1.   

    忘记说了,我的系统为oracle 9.2 ,不支持正则表达式的函数
      

  2.   

    --测试数据
    create table temp(cip varchar2(100));insert into temp 
    select '192.168.168.1' from dual union all
    select 'abc' from dual union all
    select 'abcfdasfd' from dual union all
    select '10.10.0.1' from dual;
    --执行查询
    select * from temp where cip like '%.%.%.%'
    --输出结果
    192.168.168.1
    10.10.0.1
      

  3.   

    问题是在于我的数据库中除去纯IP地址的网站还有诸如www.sina.com.cn,如果条件为'%.%.%.%'的话,会出现www.sina.com.cn,这样结果就不正确了,我就是想将ip和域名区分开
      

  4.   

    这样呢?select * from temp where translate(replace(cip,'.',''),'\1234567890','\') is null and cip like '%.%.%.%'
      

  5.   

    我试验一下,能帮我讲一下原理吗?关于这一句:translate(replace(cip,'.',''),'\1234567890','\') is null
      

  6.   

    一、语法:  
        TRANSLATE(string,from_str,to_str)  
      二、目的  
            返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE   是   REPLACE   所提供的功能的一个超集。如果   from_str   比   to_str   长,那么在   from_str   中而不在   to_str   中的额外字符将从   string   中被删除,因为它们没有相应的替换字符。to_str   不能为空。Oracle   将空字符串解释为   NULL,并且如果TRANSLATE   中的任何参数为NULL,那么结果也是   NULL。  
        三、允许使用的位置  
          过程性语句和SQL语句。  
      四、示例  
        SELECT   TRANSLATE('abcdefghij','abcdef','123456')   FROM   dual;  
        TRANSLATE   (  
        --------------  
        123456ghij  
       
        SELECT   TRANSLATE('abcdefghij','abcdefghij','123456')   FROM   dual;  
        TRANSL  
        ----------  
        123456
      

  7.   

    上面的高手,我还要再请教一下,如果我的ip地址格式为:“ip地址:端口号”那么这条查询该如何写呢?谢谢了,我可以给你200分
      

  8.   

    select * from temp2 where 
    translate(replace( decode(instr(cip,':',1),0,cip,substr(cip,1,instr(cip,':',1)-1)),'.',''),'\1234567890','\') is null 
    and cip like '%.%.%.%'