我在合并2个具有使用随机函数掩盖的值的表时遇到问题。除非有人有权读取所有数据,否则用户应看到(-1000,2000)
之间的随机值为每个表创建单独的视图会以正确的方式生成值,但是当我尝试将这两个表或视图合并时会出现问题。而不是看到随机值,我看到的都是0
假设表A定义为:
ID INT IDENTITY (1, 1) NOT NULL,
Value MONEY MASKED WITH (FUNCTION = 'random(-1000, 20000)') NOT NULL
并且表B为:
ID INT IDENTITY (1, 1) NOT NULL,
Value DECIMAL (18, 6) MASKED WITH (FUNCTION = 'random(-1000.000000, 20000.000000)') NULL
在表A中:
ID Value
1 12
2 21
3 34
在表B中:
ID Value
7 17.12
8 23.01
9 2.56
每个表的视图显示每个表的ID和没有权限的用户的掩码值,以及具有正确权限的用户的表中的值
但是,两个表的UNION都应显示ID和被屏蔽的值,但应显示值= 0.000000。
我有点困惑如何使这些值在并集中显示为掩码的随机值
您可以UNION
/ UNION ALL
选择同一张表而不会出现问题。但是,使用两个不同的表将所有掩码值设为0。
您可以将以下内容用作使用临时表的解决方法:
SELECT * INTO #t1 FROM TableA
SELECT * INTO #t2 FROM TableB
SELECT * FROM #t1
UNION ALL
SELECT * FROM #t2