mysql实现数据脱敏_mysql自定义函数实现表的指定列进行数据脱敏(PS:来自mysql小白的提问)...

本文介绍了一种使用MySQL自定义函数实现数据脱敏的方法。通过创建一个名为myMask的函数,该函数接受一个字符串参数并返回经过脱敏处理的字符串。此外还探讨了自定义函数与存储过程之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求:不考虑原来字段的值,只考虑数据长度,通过脚本update tabA set colA = stringMask(colA )实现数据脱敏,例如张三丰--ASD

提问:将指定列名作为mysql自定义函数的参数,可否获取该指定列的数据???还是说这种情况通过存储过程实现更好???

背景知识:

自定义函数(user-defined function UDF)与存储过程的区别

1,函数方法的参数列表只允许IN类型的参数,并且不允许指定IN关键字

2,函数方法返回一个单一的值,值的类型在存储方法的头部定义

3,函数方法可以在SQL语句内部调用

4,函数方法不能返回结果集

UDF可以没有参数,但UDF必须有且只有一个返回值

下面是mysql自定义函数,实现的是对传进去的某个字符串进行数据脱敏

CREATE DEFINER=root@localhost FUNCTION myMask(v_str VARCHAR(800)) RETURNS varchar(800) CHARSET utf8

BEGIN

DECLARE str VARCHAR(800) DEFAULT '';

DECLARE strlen VARCHAR(800) DEFAULT '';

DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

DECLARE return_str varchar(800) DEFAULT '';

DECLARE i INT DEFAULT 0;

SET str = v_str;

set strlen = CHAR_LENGTH(str);

WHILE i< CONVERT(strlen,SIGNED) DO

SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));

SET i = i +1;

END WHILE;

RETURN return_str;

END

希望通过优化,实现上述要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值