两种取随机记录的写法。第二种比较好。
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