代码改变世界

Oracle:DBMS_RANDOM.VALUE取随机数.

2011-11-03 16:50  Tracy.  阅读(773)  评论(0编辑  收藏  举报

两种取随机记录的写法。第二种比较好。

WITH src
     AS (SELECT COLUMN_VALUE str
           FROM TABLE (fn_split ('ABDE,EDCE,FEDC', ','))),
     num AS (SELECT str, ROW_NUMBER () OVER (ORDER BY NULL) rn FROM src),
     ran AS (SELECT TRUNC (DBMS_RANDOM.VALUE (1, 4)) rand FROM DUAL)
SELECT *
  FROM num
 WHERE rn = (SELECT rand FROM ran)

  

SELECT str
  FROM (  SELECT COLUMN_VALUE str
            FROM TABLE (fn_split ('ABDE,EDCE,FEDC', ','))
        ORDER BY DBMS_RANDOM.VALUE)
 WHERE ROWNUM = 1