【问题】
What is a best way to shuffle a database column using pl/sql. how to shuffle a database column eg first name with around 70000 of rows . TIA
针对此问题,有人给了下面的方案:
DECLARE
SUBTYPE Name IS VARCHAR2(200);
TYPE Names_tab IS TABLE OF Name;
--
tabOrigin Names_tab;
tabShuffled Names_tab;
vSwap Name;
idx BINARY_INTEGER;
BEGIN
\-\- Do simple play WITH DUAL instead of real data
WITH rs AS (
SELECT DBMS_RANDOM.STRING( 'A', 1) name FROM dual
UNION ALL
SELECT DBMS_RANDOM.STRING( 'A', 1) name FROM dual
UNION ALL
SELECT DBMS_RANDOM.STRING( 'A', 1) name FROM dual
UNION ALL
SELECT DBMS_RANDOM.STRING( 'A', 1) name FROM dual
UNION ALL
SELECT DBMS_RANDOM.STRING( 'A', 1) name FROM dual
UNION ALL
SELECT DBMS_RANDOM.STRING( 'A', 1) name FROM dual
)
SELECT name origin, name shuffle
BULK COLLECT INTO tabOrigin, tabShuffled
FROM rs
;
--
\-\- As mentioned in 'Operational Notes' for package DBMS_RANDOM
\-\-

在数据库中打乱列顺序的问题,通常使用PL/SQL可以实现,但操作复杂。通过SPL,可以更简洁地完成该任务,包括执行SQL取数、对序列成员随机排序、更新回数据库表等步骤。
最低0.47元/天 解锁文章
686

被折叠的 条评论
为什么被折叠?



