gpt4 book ai didi

sql - 查找并替换信用卡号码

转载 作者:行者123 更新时间:2023-12-02 22:52:05 27 4
gpt4 key购买 nike

我们有一个很大的数据库,里面有很多数据。我最近发现我们的销售和运输部门一直在使用应用程序的一部分来公开存储客户的信用卡号码。我们已经阻止了它,但现在有数千行包含数字。

我们正在尝试找出如何扫描某些列中的 16 位连续数字(或破折号分隔符)并将其替换为 X。

这不是一个简单的 UPDATE 语句,因为卡号存储在大量文本中。到目前为止,我一直无法弄清楚 SQL Server 是否能够使用正则表达式(似乎不能)。

所有其他方法都失败了,我将通过 PHP 来完成此操作,因为这是我最擅长的......但这会很痛苦。

最佳答案

听起来您需要将 PATINDEX 与 WHERE LIKE 子句一起使用。

类似这样的事情。使用类似的内容创建一个存储过程,然后使用您已识别的一堆不同参数(将 @pattern 和 @patternlength 作为参数)调用它,直到替换了所有实例。

declare @pattern varchar(100), @patternlength int
set @pattern = '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'
set @patternlength = 19

update tableName
set fieldName =
LEFT(fieldName, patindex('%'+ @pattern + '%', fieldName)-1)
+ 'XXXX-XXXX-XXXX-XXXX'
+ SUBSTRING(fieldName, PATINDEX('%'+ @pattern + '%', fieldName)+@patternlength, LEN(fieldName))
from tableName
where fieldName like '%'+ @pattern + '%'

诀窍就是找到适当的模式,并设置适当的@patternlength值(不是@pattern的长度,因为那不起作用!)

关于sql - 查找并替换信用卡号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11208260/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com