首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:如何替换字段中除后4个字符以外的所有字符?(保护信用卡号码)

问MySQL:如何替换字段中除后4个字符以外的所有字符?(保护信用卡号码)
EN

Stack Overflow用户
提问于 2012-12-15 15:45:48
回答 2查看 3.3K关注 0票数 0

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

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

该表被称为"booking",字段被称为"creditcardnumber“

EN

回答 2

Stack Overflow用户

发布于 2012-12-15 15:56:10

试着这样做

代码语言:javascript
复制
SELECT
  CONCAT(
    REPEAT('X', CHAR_LENGTH(card_number) - 4),
    SUBSTRING(card_number, -4)
  ) AS masked_card
FROM
  table_name ;
票数 4
EN

Stack Overflow用户

发布于 2012-12-15 16:01:20

检查此reference: * SQLFIDDLE。请不要介意表模式,它只是示例旧数据。我将第一条记录更改为一个信用卡号码(糟糕-它不是以5、4或3开头的;),但是LAPD可以完成这项工作。

查询:

代码语言:javascript
复制
select right(hasha,4),
lpad(right(hasha,4),length(hasha),'x')
from actors
where id = 1
;

结果:

代码语言:javascript
复制
RIGHT(HASHA,4)  LPAD(RIGHT(HASHA,4),LENGTH(HASHA),'X')
3456            xxxxxxxxxxxx3456
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13890398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档