SQL, маскирующий поле сопоставления в запросе - PullRequest
1 голос
/ 01 июля 2019

Я создаю представление для извлечения данных из таблицы и загрузки этих данных в фиксированный файл, который будет загружен в систему. Представление отобразит столбец таблицы в определенный формат.

Существует один столбец 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 ]

1 голос
/ 01 июля 2019

Вы можете использовать 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

Но учтите, что это не настоящая маскировка конфиденциальной информации.Очень просто снять маску информации и получить исходный идентификатор счета.

Часто используемая маскировка, например, 012345678 получает ******678.

0 голосов
/ 01 июля 2019

@ MarmiteBomber @Stilgar - Большое спасибо за разъяснения и помощь в ответе.

Я только что настроил запрос, и он успешно запустился.

Измененный запрос

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

СОЗДАНИЕ ИЛИ ЗАМЕНА СИЛЫ РЕДАКТИРУЕМОГО СИЛЫ "Схема1". "VW_ActiveTraders" ("ФОНД", "ИМЯ", "ГОРОД", "АКС") КАК

Выбрать
TD_Fund как FUND, Имя как NAME, Город как CITY, --Account_Number как ACN TRANSLATE (Account_Number, '0123456789', '1234567890') как ACN,

FROM Trader1 - Имя таблицы

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...