将DB2中的记录部分替换为 ********

ijnw1ujt  于 2022-11-07  发布在  DB2
关注(0)|答案(3)|浏览(193)

我想使用DB2 IBM中的SQL将我的列部分替换为name(Accountno),如下所示。另外,我不想创建新列,需要在同一列中进行更改
之前帐号:

234567734
987652309

在帐号之后:

23*****34
98*****09
mi7gmzs6

mi7gmzs61#

您可以复制账号的前两个字符和最后两个字符,然后重复5次,将中间的字符替换为“*”。

UPDATE test_table
 SET    Accountno = SUBSTR(Accountno, 1, 2) 
        || REPEAT('*', LENGTH(Accountno) - 4) 
        || SUBSTR(Accountno, LENGTH(Accountno) - 1, 2)  

   sample output:
   22*****89
   34*****24
eyh26e7m

eyh26e7m2#

您可以使用Dynamic Data Masking

ALTER TABLE Account   ALTER COLUMN Accountno nvarchar(10) MASKED WITH (FUNCTION= 'partial(2,"XXXXX",2)');
iq0todco

iq0todco3#

UPDATE table
SET accoountno =
       substr(accoountno, 1, 2) || '*****' ||
       substr(accoountno, char_length(accoountno) - 1, 2);

相关问题