1.
函数嵌套使用时,内层函数的脱敏规则可以传递到外层。
这种传递也只限于非比较计算类的函数。
举例如下:
select case col when 1 then nvl(mask_col, '123') when 2 then '456' else '789' end from t;
说明
其中col 为非脱敏列。mask_col 为脱敏列,“123”、“456”、“789” 为常量。
上面查询中,nvl 函数可能的返回值有mask_col 和’123’,所以nvl 函数使用
mask_col 的脱敏规则对mask_col 和’123’脱敏,此脱敏规则同时也传递到外层
case when 函数中,所以’456’和’789’也会使用mask_col 的脱敏规则脱敏。
2.
脱敏规则继承还出现在子查询的使用场景中,
外层投影列的脱敏规则继承自子
查询投影列的脱敏规则。
举例如下:
select col from (select reverse(mask_col) as col from t3) as tmp;
其中mask_col 为脱敏列。
上面查询中,reverse 函数会对参数进行比较或运算操作,当参数为脱敏列时,
函数的脱敏规则为默认脱敏。外层的col 脱敏规则继承自子查询
reverse(mask_col)的脱敏规则,所以外层的col 脱敏规则也为默认脱敏。