SQL屏蔽查询中的映射字段

时间:2019-07-01 17:15:36

标签: sql oracle

我正在创建一个视图以从表中提取数据并将该数据加载到固定文件中,该文件将被加载到系统中。该视图会将表列映射为特定格式。

有一列Account_Number,由于该列包含敏感信息,因此需要屏蔽。

我掩盖该值的逻辑是将数字移至数字行中的下一个位置。

因此,如果数字为0,然后是1,则是4,然后是5,依此类推。我无法在视图本身中提供逻辑。

任何帮助将不胜感激。

CREATE OR REPLACE FORCE EDITIONABLE VIEW "Schema1"."VW_ActiveTraders" ("FUND", "NAME", "CITY", "ACN") AS 

Select  
TD_Fund as FUND,
Name as NAME,
City as CITY,
Account_Number as ACN

FROM Trader1 -- Table Name

Account Number 
023457456
123456789
012345678

Masked Account Number
134568567
012345678
123456789

请注意,“帐号”列中有1000多个条目。

2 个答案:

答案 0 :(得分:1)

您可以使用TRANSLATE来移位数字

with dt as (
select '023457456' ACN from dual union all
select '123456789' ACN from dual union all
select '012345678' ACN from dual)
select ACN,
TRANSLATE(ACN,'0123456789','1234567890') as ACN_WEAK_MASK
from dt;

ACN       ACN_WEAK_
--------- ---------
023457456 134568567
123456789 234567890
012345678 123456789

但是请注意,这不是对敏感信息的真正掩盖取消屏蔽信息并获取原始帐户ID非常容易。

经常使用的遮罩例如012345678获得******678

答案 1 :(得分:0)

@MarmiteBomber @Stilgar-非常感谢您的澄清和帮助。

我刚刚调整了查询​​,它成功运行了。

更改的查询

--------------------------------------------------- -------------------------------------------

创建或替换强制可编辑视图“ Schema1”。“ VW_ActiveTraders”(“ FUND”,“ NAME”,“ CITY”,“ ACN”)为

选择
TD_Fund作为FUND, 名称为NAME, 城市,CITY --Account_Number作为ACN TRANSLATE(Account_Number,'0123456789','1234567890')作为ACN,

FROM Trader1-表名

--------------------------------------------------- -------------------------------------------