繁体   English   中英

插入随机名称PL / SQL

[英]Inserting random names PL/SQL

如何将随机名称插入另一个表? 例如 :

select firstname,lastname from table1;
create table2 (newfirstname varchar2(20),newlastname varchar2(20));
insert into table2 select newfirstname, random(newlastname);

如何使用table1的信息吸引新朋友?
因此,我的问题是,如何将table1中的随机“姓氏”插入table2中,以从table2中获得一个新的全名(newfirstname + newlastname),而该新全名(与first1的(firstname + lastname)不同)。 我正在使用sql developer,pl / sql。

我相信您应该在table2中有数字ID字段,例如table2.id,然后

select  
(select MIN(table2.id) from table2) as minid, (select MAX(table2.id) from table2) as maxid, 
(select table2.firstname from table2 where table2.id >= dbms_random.value(minid,maxid) order by table2.id limit 1) as rnd_firstname, 
(select table2.lastname from table2 where table2.id >= dbms_random.value(minid,maxid) order by table2.id limit 1) as rnd_lastname;

将为您提供来自table2的名字+姓氏的随机组合。

insert into table2
select A.firstname, B.lastname
  from table1 A, table1 B
 where not exists(select 1 from table1 C
                   where C.firstname=A.firstname and C.lastname=B.lastname)

如果需要,添加随机排序和/或计数限制。

  SELECT
    aa.nome,
    aa.sobrenome,
    bb.nome,
    bb.sobrenome,
    CASE 
        WHEN DBMS_RANDOM.VALUE(1,50) > 20 THEN aa.nome || bb.sobrenome
        ELSE
         bb.nome || aa.sobrenome
    END AS new_name
  FROM
    (
      SELECT
          SubStr(b.nome,1,InStr(b.nome,' ')) nome,  
          SubStr(b.nome,InStr(b.nome,' '))  sobrenome,
          sexo
      FROM 
          cadastro b
      WHERE
          empresa_id=4 
      ORDER BY 
          DBMS_RANDOM.VALUE(1,800000)
    ) aa,
    (
      SELECT 
          SubStr(b.nome,1,InStr(b.nome,' ')) nome,  
          SubStr(b.nome,InStr(b.nome,' '))  sobrenome,
          sexo
      FROM 
          cadastro b
      WHERE
          empresa_id=4               
      ORDER BY
        DBMS_RANDOM.VALUE(1,800000 )
    ) bb
  WHERE  
      aa.sexo=bb.sexo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM