我有一个名为"booking“的mySQL数据库表,其中包含一列信用卡号。显然这是不好或不安全的,我真的只需要该字段中的最后4位数字。我需要一个mySQL调用来修复这个错误。
有没有办法让一条SQL语句遍历整个数据库表,替换所有的Visa、Mastercard、Discover卡#(长度不同),并用XXX覆盖除最后4个字符之外的所有字符?或者我是否需要编写一些循环遍历每条记录的内容来进行替换?
该表被称为"booking",字段被称为"creditcardnumber“
发布于 2012-12-15 15:56:10
试着这样做
SELECT
CONCAT(
REPEAT('X', CHAR_LENGTH(card_number) - 4),
SUBSTRING(card_number, -4)
) AS masked_card
FROM
table_name ;发布于 2012-12-15 16:01:20
检查此reference: * SQLFIDDLE。请不要介意表模式,它只是示例旧数据。我将第一条记录更改为一个信用卡号码(糟糕-它不是以5、4或3开头的;),但是LAPD可以完成这项工作。
查询:
select right(hasha,4),
lpad(right(hasha,4),length(hasha),'x')
from actors
where id = 1
;结果:
RIGHT(HASHA,4) LPAD(RIGHT(HASHA,4),LENGTH(HASHA),'X')
3456 xxxxxxxxxxxx3456https://stackoverflow.com/questions/13890398
复制相似问题