我要一段字符串拼凑成众多不同的IP地址
原来的语句如下:
'10.'||round(dbms_random.value(10,100),0)||'.'||round(dbms_random.value(1,10),0)||'.'||mod(rownum,255)
这样能使我得到足够的IP地址,但是在使用时会有相同的IP地址产生。
有没有好的方法能使得生成的IP地址是互不相同的?

解决方案 »

  1.   

    除了保存下来判断重复,也没什么好的办法
    select ip from (
      select ... as ip from dual
      union
      select ... as ip from dual
      union
      select ... as ip from dual
    )
    不知道如何,没试过
      

  2.   

    楼主用随机数来生成,但是数据的范围有限,所有当达到一定数据量时冲突是一定的,而且楼主用的方法生成的IP数据是有限的
    只能生成90*10*255个,由于最后一位来自于rownum,都是从1开始,所以对应rownum=1时,只能有90*10个不同的IP,冲突是很有可能的。建议楼主用sequence来生成,能保证IP在一定范围内顺序增加,不重复
      

  3.   


    用序列sequence吧,这样不会重复!