我有一个名为“booking”的 mySQL 数据库表,其中包含一列信用卡号。显然这不好也不安全,我真的只需要该字段的最后 4 位数字。我需要一个 mySQL 调用来修复这个错误。
有没有一种方法可以让一条 SQL 语句遍历整个数据库表并替换所有 Visa、Mastercard、Discover 卡号(长度不同),并用 XXX 覆盖除最后 4 个字符之外的所有字符。或者我是否需要编写一些循环遍历每条记录的东西来进行替换?
该表称为“booking”,字段称为“creditcardnumber”
像这样试试
SELECT
CONCAT(
REPEAT('X', CHAR_LENGTH(card_number) - 4),
SUBSTRING(card_number, -4)
) AS masked_card
FROM
table_name ;
检查此参考: * SQLFIDDLE。不要介意表模式,它只是示例旧数据。我将第一条记录更改为信用卡号(duh - 它不是以 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 xxxxxxxxxxxx3456