首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于混淆DB2中电话号码的SQL语句

问用于混淆DB2中电话号码的SQL语句
EN

Stack Overflow用户
提问于 2013-08-15 07:23:27
回答 1查看 487关注 0票数 0

我是SQL C的新手,我想知道是否可以在DB2中运行SQL语句,该语句可以遍历所有表并更改(可以是置乱、替换、随机或其他任何方式)找到的任何10DGIT电话号码。在坚果外壳中,对所有表中的所有字段执行全局搜索和替换,以混淆任何电话号码(私人信息)。

我需要把一个客户的DB2数据库(17个表)交给一个软件供应商来做一些报告,但我的任务是确保在这个过程中没有暴露真实的电话号码。我确信有一个SQL语句可以处理单个表(然后我可以进入DB2控制中心并运行它17倍),但我正在寻找一种快速,干净的方法来“准备”这个数据库,然后再将它发送出去。

提前感谢你,DB2大师!

麦克

EN

回答 1

Stack Overflow用户

发布于 2013-08-16 16:59:28

如果要在db2中隐藏信息,则应使用these functions

  • ENCRYPT
  • DECRYPT_BIN
  • DECRYPT_CHAR
  • GETHINT

或IBM数据库Encryption Expert

这些函数是用于varchar的,而我认为您有一个int列,所以它不起作用。

但是,您可以通过应用UDF和查询目录来隐藏不同表中的所有电话号码。

例如,您的UDF (用户定义函数)可以将电话乘以一个您只知道的给定号码。然后,为了解密它,你只需要除以相同的数字。

然后,要将此过程应用于所有表,您必须查询目录。例如,

代码语言:javascript
复制
select tabschema, tabname
from syscat.columns
where colname like 'PHONE%'

一旦确定了这些表,就可以使用UDF对其进行更新

代码语言:javascript
复制
select 'update ' || trim(tabschema) || '.' || trim(tabname) || ' set ' || trim(colname) || ' = myUDF(' || colname || ', 5) ;' from syscat.columns where colname like 'PHONE%'

假设5是你的加密号。

您只需执行输出即可隐藏电话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18243973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档