【问题标题】:Union of masked values掩蔽值的联合
【发布时间】:2020-03-04 10:00:14
【问题描述】:

我在合并 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。

我有点困惑如何使这些值在联合中显示为屏蔽的随机值

【问题讨论】:

    标签: sql-server ssms tabular


    【解决方案1】:

    您可以UNION / UNION ALL 选择同一张表而不会出现问题。但是使用两个不同的表会为所有掩码值提供 0。

    您可以使用以下作为临时表的解决方法:

    SELECT * INTO #t1 FROM TableA
    SELECT * INTO #t2 FROM TableB
    
    SELECT * FROM #t1
    UNION ALL
    SELECT * FROM #t2
    

    demo on dbfiddle.uk

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 2017-12-07
      • 2017-02-23
      • 1970-01-01
      • 2015-08-18
      • 2014-02-14
      相关资源
      最近更新 更多