0

我有一个名为“booking”的 mySQL 数据库表,其中包含一列信用卡号。显然这不好也不安全,我真的只需要该字段的最后 4 位数字。我需要一个 mySQL 调用来修复这个错误。

有没有一种方法可以让一条 SQL 语句遍历整个数据库表并替换所有 Visa、Mastercard、Discover 卡号(长度不同),并用 XXX 覆盖除最后 4 个字符之外的所有字符。或者我是否需要编写一些循环遍历每条记录的东西来进行替换?

该表称为“booking”,字段称为“creditcardnumber”

4

2 回答 2

4

像这样试试

SELECT
  CONCAT(
    REPEAT('X', CHAR_LENGTH(card_number) - 4),
    SUBSTRING(card_number, -4)
  ) AS masked_card
FROM
  table_name ;
于 2012-12-15T07:56:09.853 回答
3

检查此参考: * 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
于 2012-12-15T08:01:20.070 回答