昨天测试时发现大佬暴力修改了数据库的某些字段,导致无法人员注册,按理说屏蔽关键信息应该是只将身份证的几位改为*就好。
为了继续测试,自力更生,寻求正确的sql语句修改,学习到一些方便的函数
concat函数
使用方法:
CONCAT(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
MID()函数
SQL MID() 函数用于得到一个字符串的一部分。这个函数被MySQL支持,但不被MS SQL Server和Oracle支持。在SQL Server, Oracle 数据库中,我们可以使用 SQL SUBSTRING函数或者 SQL SUBSTR函数作为替代。
MID() 函数语法为:
1 |
SELECT MID(ColumnName, Start [, Length]) |
2 |
FROM TableName |
注:字符串从1开始,而非0,Length是可选项,如果没有提供,MID()函数将返回余下的字符串。
LEFT()
函数
是一个字符串函数,它返回具有指定长度的字符串的左边部分。
LEFT(Str,length);
接收两个参数:
str:一个字符串;
length:想要截取的长度,是一个正整数;
right()函数同理,只是从右边开始截取
最后放上测试用的sql
SELECT
CONCAT("UPDATE `persons` SET LastName='",CONCAT(LEFT(LastName,1),'**',RIGHT(LastName,2)),"' WHERE (`LastName`='",LastName,"') LIMIT 1;"
)
FROM
persons
双引号内部要执行表达式用逗号隔开,不然执行时还是当字符串。