在Oracle數(shù)據(jù)庫(kù)中有一張BANKCARD表,其中有一個(gè)字段ID,記錄著銀行卡號(hào)的明文。現(xiàn)在想把卡號(hào)的中間部分隱藏,只顯示前6位和后4位,其他的部分改為*星號(hào)。比如卡號(hào)為6228480010028888),隱藏后儲(chǔ)存的是622848****8888??ㄌ?hào)的位數(shù)并不是固定的,一般在15~19位之間?,F(xiàn)在考慮的SQL是update BANKCARD set id=REPLACE(id,substr(id,6,id.length-4) ,'*') where id.length > 10 ;其中的.length不是規(guī)范的,請(qǐng)問(wèn)有什么方法可以獲取這個(gè)字段的長(zhǎng)度?順便求各位大神指導(dǎo)最靠譜的SQL該怎么寫???
2 回答

叮當(dāng)貓咪
TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
select substr(ID, 1, 6) || '******' || substr(ID, LENGTH(ID)-3, LENGTH(ID)) from BANKCARD;
update BANKCARD set ID = substr(ID, 1, 6) || '******' || substr(ID, LENGTH(ID)-3, LENGTH(ID));

江戶川亂折騰
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
update BANKCARD set ID = substr(id, 1, 6) || lpad('*', length(id)-10, '*') || substr(id, -4)
- 2 回答
- 0 關(guān)注
- 1004 瀏覽
添加回答
舉報(bào)
0/150
提交
取消