Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在oracle表列中混淆名称_Sql_Oracle_Oracle12c_Obfuscation - Fatal编程技术网

Sql 在oracle表列中混淆名称

Sql 在oracle表列中混淆名称,sql,oracle,oracle12c,obfuscation,Sql,Oracle,Oracle12c,Obfuscation,我的要求是为了如下所示的混淆目的,将oracle表中的名称混在一起 规则 同一记录不应具有相同的名称 应根据性别进行混淆 逻辑应该是完全随机的 表员工 身份证件 名称 性别 1. 彼得 M 2. 帕斯卡 M 3. 罗宾 M 4. 斯蒂芬妮 F 5. 艾莉亚 F 您可以使用row\u number(),将每个性别的姓名随机化: 这并不保证名称永远不会被重复使用。事实上,考虑到其他限制,这是不可能的——一个性别可能只有一个名字。但是,这会随机分配名称,因此不太可能保持相同的名称 如果您的姓名可以重复

我的要求是为了如下所示的混淆目的,将oracle表中的名称混在一起

规则

  • 同一记录不应具有相同的名称
  • 应根据性别进行混淆
  • 逻辑应该是完全随机的
  • 员工

    身份证件 名称 性别 1. 彼得 M 2. 帕斯卡 M 3. 罗宾 M 4. 斯蒂芬妮 F 5. 艾莉亚 F
    您可以使用
    row\u number()
    ,将每个性别的姓名随机化:

    这并不保证名称永远不会被重复使用。事实上,考虑到其他限制,这是不可能的——一个性别可能只有一个名字。但是,这会随机分配名称,因此不太可能保持相同的名称

    如果您的姓名可以重复,请使用
    densite\u rank()
    而不是
    row\u number()

    他是一把小提琴


    通过使用“移位”方法,可以避免将名称映射回相同的名称。然而,这种转变是可以撤销的。以很小的重新分配概率随机分配姓名的解决方案可能更适合混淆。

    您可以使用
    行数()在每个性别中随机分配姓名。

    这并不保证名称永远不会被重复使用。事实上,考虑到其他限制,这是不可能的——一个性别可能只有一个名字。但是,这会随机分配名称,因此不太可能保持相同的名称

    如果您的姓名可以重复,请使用
    densite\u rank()
    而不是
    row\u number()

    他是一把小提琴


    通过使用“移位”方法,可以避免将名称映射回相同的名称。然而,这种转变是可以撤销的。随机分配名称的解决方案(重新分配的概率非常小)可能更适合于模糊处理。

    我认为,如果已知名称是随机分配的,用于模糊处理,那么,尽管OP有“要求”,偶尔使用“真实”名称其实并不重要因此,我认为,如果已知这些名字是为了混淆而随机产生的,那么偶尔使用“真实”的名字就无关紧要了,尽管OP对此有“要求”。
    select e.*, e2.name as new_name
    from (select e.*,
                 row_number() over (partition by gender order by name) as seqnum
          from employee e
         ) e join
         (select e.*,
                 row_number() over (partition by gender order by dbms_random.random()) as seqnum
          from employee e
         ) e2
         on e.gender = e2.gender and e.seqnum = e2.seqnum;