首页 > 解决方案 > SQL 屏蔽查询中的映射字段

问题描述

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

有一列 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 个条目。

标签: sqloracle

解决方案


您可以使用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非常容易。

一个经常使用的掩码是012345678gets ******678


推荐阅读