在Oracle數(shù)據(jù)庫中有一張BANKCARD表,其中有一個字段ID,記錄著銀行卡號的明文?,F(xiàn)在想把卡號的中間部分隱藏,只顯示前6位和后4位,其他的部分改為*星號。比如卡號為6228480010028888),隱藏后儲存的是622848****8888??ㄌ柕奈粩?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ī)范的,請問有什么方法可以獲取這個字段的長度?順便求各位大神指導最靠譜的SQL該怎么寫???
2 回答

叮當貓咪
TA貢獻1776條經(jīng)驗 獲得超12個贊
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貢獻1851條經(jīng)驗 獲得超5個贊
update BANKCARD set ID = substr(id, 1, 6) || lpad('*', length(id)-10, '*') || substr(id, -4)
- 2 回答
- 0 關(guān)注
- 994 瀏覽
添加回答
舉報
0/150
提交
取消