使用trim后,Azure SQL数据库未显示为动态掩码模式

问题描述

我正在使用Azure SQL数据库,并且某些表列正在使用动态掩码,如下所示:

CREATE TABLE PartialMask
(
    ID INT IDENTITY (1,1) PRIMARY KEY NOT NULL,Name VARCHAR(255) MASKED WITH (FUNCTION = 'partial(2,"XXXXXX",2)') NULL,Comment NVARCHAR(255) MASKED WITH (FUNCTION = 'partial(5,"XXXX",5)') NOT NULL
);

例如,名称的原始数据为“ ABCDE”,则查询将显示“ ABXXXXXXDE”

但是,当我们使用trim()作为名称列时,例如

Select trim(name) From PartialMask

我会得到“ xxxx”。

您有同样的问题和解决方案吗?

解决方法

我测试了并得到相同的问题:

enter image description here

这是原因:

参数

  • 字符是任何非LOB的文字,变量或函数调用 包含的字符类型(nvarchar,varchar,nchar或char) 应删除的字符。 nvarchar(max)和varchar(max) 类型是不允许的。

参考:https://docs.microsoft.com/en-us/sql/t-sql/functions/trim-transact-sql?view=sql-server-ver15#arguments

trim()不支持从动态数据屏蔽功能获得的字符。 Dynamic data masking是为了保护数据,如果没有权限,我们将看不到完整的数据。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...