例 ID が 1213 の場合、**13 を表示します。
質問する
806 次
2 に答える
4
数字だと
select '**' || substr(to_char(id),3)
from my_table
または、すでにキャラクターの場合
select '**' || substr(id,3)
from my_table
これ**
は、Oracle 連結演算子を使用して文字列の先頭に連結し、 usingの||
最初の 2 文字を削除します。id
substr
デモ用のSQL Fiddleを次に 示します。
于 2012-08-30T20:40:46.233 に答える
0
パフォーマンスをあまり犠牲にしたくない場合は、最初の2文字をマスクするために-
SQL> select regexp_replace('1213','(.)2','**') from dual; --if VARCHAR
MASKED
------------
**13
SQL> select regexp_replace(1213,'(.)2','**') from dual; --if NUMBER
MASKED
------------
**13
REGEXP_REPLACE
は同様に機能NUMBER
するVARCHAR
ため、変換時間を節約できます。
連続して、関数操作で関数ベースのインデックスregexp
を作成して、次のようにクエリを最適化できます (常に最初の 2 文字のみをマスクすることを考慮してID
) -
CREATE INDEX
mask_id
ON
table_name
(regexp_replace(id,'(.)2','**'));
于 2012-08-30T21:28:24.623 に答える