oracle 前面4个字符,Oracle - 将所有字符替换为“X”,除了最后4个字符(Oracle - Replacing all characters to “X”, except last 4 ...

Oracle - 将所有字符替换为“X”,除了最后4个字符(Oracle - Replacing all characters to “X”, except last 4 character)

我试着在这里找到解决方案,但没有运气,所以我试着在这里提出一个问题,看看谁可以帮助我。

请参阅主题,我想将所有字符替换为“X”,但Oracle列的最后4个字符或更少字符除外。

例如:

123456789将成为XXXXX6789(前5个字符更改为X)

12345678将成为XXXX5678(前4个字符更改为X)

1234567将变为XXX4567(前3个字符更改为X)

123456将成为XX3456(前2个字符更改为X)

12345将成为X2345(第一个字符更改为X)

1234将成为1234(保持不变)

123将成为123(保持不变)

12将成为12(保持不变)

1将变为1(保持不变)

我尝试使用下面的语句,但似乎不适用于案例8和9。

1)不返回“1”。

Select RPAD('X',length('1')-4,'X') || substr('1',length('1')-4,length('1')) from dual

2)返回'2'而不是'12'。

Select RPAD('X',length('12')-4,'X') || substr('12',length('12')-4,length('12')) from dual

我尝试使用下面的另一个声明,但它返回'XX67XX'而不是'XX6745'。

我猜有重复的数字导致它返回无效值。

select REPLACE('456745', substr('456745',1,length('456745')-4), RPAD('*',length('456745')-4,'X')) From dual

也许有人可以帮忙吗?

预先感谢。

I try to find out the solution here but no luck, so I try to raise a question here see who can help me for this.

Refer to the topic,

你可能感兴趣的:(oracle,前面4个字符)