sql语句对数据进行脱敏

本文介绍了SQL Server中的数据脱敏技术,强调了其在保护敏感数据如PII方面的重要性。通过内置函数如HASHBYTES、SUBSTRING、REPLACE、RAND和NEWID,以及用户自定义函数,SQL Server提供了多种数据脱敏方案,适用于字符串、数字、日期等多种数据类型,确保数据安全。

随着新的法律要求和业务需求,有些企业深刻地意识到,对数据的安全和脱敏处理,以保护敏感数据,如PII,假面具等,非常重要。 SQL Server 技术可以提供优质的解决方案,这种技术可以将真实数据转换为假数据,以简便的方式处理数据,并防止数据被非法使用。

在 SQL Server 中,脱敏技术可以使几乎所有数据都可用,包括私人信息,假面具等。 SQL Server 提供了一些解决方案,可以处理不同类型的敏感数据,例如字符串,数字,日期,时间,文件,图像。 CM Client Data Masker for SQL Server 可以轻松地完成这些任务,只需设置规则就可以快速处理数据。

SQL Server 脱敏技术可以处理多种类型的敏感数据,例如对数据字符串,数字,日期,时间,文件,图像进行哈希,unicode,段落,非重复的无记忆的值等。
SQL Server 是一个关系型数据库管理系统,它支持各种数据类型和函数。脱敏函数就是其中一种在处理敏感数据时非常有用的函数。

SQL Server 提供了一些内置的脱敏函数。下面是一些常用的脱敏函数
1).HASHBYTES 函数
HASHBYTES 函数可以将输入的字符串转换为二进制数据,并对其进行散列处理。它的语法如下

HASHBYTES (‘algorithm’, input )

其中 algorithm 可以为 MD2,MD4,MD5,SHA和SHA1 等算法。input 为要进行散列处理的字符串。

2).SUBSTRING 函数
SUBSTRING函数可以用来截取字符串的某一部分,并将其作为脱敏结果。它的语法如下

SUBSTRING ( expression , start , length )

其中expression 是要截取部分的原始字符串,start 是要截取的起始位置,length是要截取的长度。

3).REPLACE 函数
REPLACE函数可以用来替换字符串中的某一部分为指定字符串,并将其作为脱敏结果。它的语法如下:

REPLACE( string_expression , string_pattern , string_replacement )

其中 string_expression 是要进行替换的字符串,string_pattern 是要替换的子字符串,string_replacement 是替换后的字符串。

4).RAND 函数:
RAND函数可以生成一个随机数字,并将其作为脱敏结果。它的语法如下:

RAND ( Iseed])

其中 seed 是可选的,可以用来指定随机数生成算法中的种子值。

5).NEWID 函数
NEWID函数可以生成一个 GUID 并将其作为脱敏结果。它的语法如下:

NEWID ()

除了以上内置的脱敏函数外,SQL Server 还支持用户自定义函数。用户可以根据自己的需求编写自己的脱敏函数。

总的来说,SOL Server 的脱敏函数可以帮助用户在处理敏感数据时,保护数据的真实性和隐私性。用户可以根据自己的需求选择合适的脱敏函数,并结合其他 SQL 语句进行数据处理。

例如,若要脱敏处理一个字符串,可以使用以下SQL命令:

UPDATE table SET column = SUBSTRING(HASHBYTES('SHA',column),1,8) WHERE condition;

此外,SQL Server 脱敏技术还可以通过脱敏函数对数据进行处理,以避免有敏感信息可以被任何人非法恢复。 这些函数包括 SOUNDEX,Noise(),Randomize()和其他。

例如,若要将一个数字列转换为假数据,可以使用以下语句:

UPDATE table SET column = RANDOMIZE(column)  WHERE condition;

sql语句对数据进行简单脱敏:

sql server :

--脱敏姓名
UPDATE bd_psndoc SET name = (iif(LEN(name)>2, CONCAT(LEFT(name, 1), '**' ), CONCAT(LEFT(name, 1), '*' )));

-- 脱敏身份证号
UPDATE bd_psndoc SET id = (iif(LEN(id)>6, CONCAT(LEFT(id, 4), '************', RIGHT(id, 2)), ''));

-- 脱敏手机号
UPDATE bd_psndoc SET mobile = (iif(LEN(mobile)>3, CONCAT(LEFT(mobile, 3), '*****', RIGHT(mobile, 3)), ''));

-- 脱敏邮箱
UPDATE bd_psndoc SET email = (iif(LEN(email)>3, CONCAT(LEFT(email, 3), '**@**', RIGHT(email, 3)), ''));

-- 数量脱敏
UPDATE bd_psndoc set num = replace(replace(replace(replace(num, '4', '6'), '2', '7'), '3', '8'), '1', '5');

注意:Sql Server 2012 版以下,使用 case when 替换 iif

mysql

-- 脱敏姓名
UPDATE table SET `name` = (if(LENGTH(name)>2,CONCAT(LEFT(name,1), '**' ),CONCAT(LEFT(name,1), '*' )));

-- 脱敏身份证号
UPDATE table SET idNumber = (if(LENGTH(idNumber)>6,CONCAT(LEFT(idNumber,4), '************' ,RIGHT(idNumber,2)),''));

-- 脱敏手机号
UPDATE table set phone = (if(LENGTH(phone)>3,CONCAT(LEFT(phone,3), '*****' ,RIGHT(phone,3)),''));

-- 脱敏邮箱
UPDATE table set email = (if(LENGTH(email)>3,CONCAT(LEFT(email,3), '**@**' ,RIGHT(email,3)),''));

-- 脱敏地址
UPDATE table set address = (if(LENGTH(address)>8,CONCAT(LEFT(address,5), '**********' ,RIGHT(address,3)),''));

-- 数量脱敏
UPDATE table set num = replace(replace(replace(replace(num,'4','6'),'2','7'),'3','8'),'1','5');

在sql语句中我们采用replace(字段名,substring(字段名,起始位数,替换字符个数),‘******’)实现。

  • replace用来替换
  • substring用于截取字段其中几位
  • 起始位数为从第几个字符开始替换
  • 替换个数是需要替换的字符数
  • ***为替换的字符,也可以用其他字符替换

比如字段name为’张三一’的varchar(20),replace(name, substring(name,1,4),‘**’)

即:UPDATE bd_psndoc SET name = replace(name,substring(name, 2, 4),‘**’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值