oracle dbms_random.value 有关问题

oracle dbms_random.value 问题SQL codeselect * from ( selectdecode (level, 2, 80, 75) xx, round(dbms

oracle dbms_random.value 问题

SQL code
  select * from ( select  decode (level, 2, 80, 75) xx, round(dbms_random.value(1,100)) qq from dual connect by level <= 10) where xx >= qq


执行上面的SQL以后会出现
xx qq
8020
7546
7542
7560
7551
7598
7576
7592

这样的结果。

下面这两个数据是怎么来的呢?
7598

7592

请各位高手教我。 这里先谢谢大家了


[解决办法]
随机函数能产生1-100之间的数据
估计你执行的时候 没有加上where xx >= qq 这个条件吧




[解决办法]
完全复制楼主的SQL在我的数据库上执行没有楼主所有说的问题,所得的结果集严格遵循了xx >= qq的条件,不符合该条件的记录不在结果集中。使用的数据库为oracle 10gSQL本身没有问题,建议楼主更换其它数据库再测试一下。
[解决办法]
是的,我执行了很多次,qq > xx的记录都被过滤掉了,每次执行得到的结果集的行数也不相同,有时是7条,有时是5条。
[解决办法]
怎么筛选出来的呀?不是 xx >= qq,不可能的事呀!!!


[解决办法]
实测结果:Oracle 11g R2


执行了很多次,不会出现不符合要求的记录。
[解决办法]
操作问题吧。
你直接把整条语句选择后再执行,保证不会出这问题。
如果是让工具自己识别整条语句,有时候会取不全,有可能遗漏后面的xx>qq
[解决办法]
我测试的也存在这样的问题,基本上每次都会出现qq>xx的情况。等解决。
[解决办法]
SQL> select * from (
 select decode (level, 2, 80, 75) xx, round(dbms_random.value(1,100)) qq from dual
 connect by level <= 10) where xx >= qq 2 3 ;

XX QQ
---------- ----------
75 3
80 64
75 10
75 42
75 71
75 66
75 63
75 44

8 rows selected.