select REGEXP_REPLACE('Tina Frederich Piedro', '\w+', '*') from table;
をマスキング名と姓のために私は\w+
これを使用していますが、それは* * *
期待される出力のための真の正規表現は何を返しますか?REGEXP_REPLACE
入力;
Tina Frederich Piedro
予想される出力。
T*** F******** P*****
select REGEXP_REPLACE('Tina Frederich Piedro', '\w+', '*') from table;
をマスキング名と姓のために私は\w+
これを使用していますが、それは* * *
期待される出力のための真の正規表現は何を返しますか?REGEXP_REPLACE
入力;
Tina Frederich Piedro
予想される出力。
T*** F******** P*****
これは一般的な解決策ではありませんが、あなたのケースではうまくいく可能性があります。あなたは'*'
秒で下ケースに文字を置き換えることができます。
select REGEXP_REPLACE('Tina Frederich Piedro', '[a-z]', '*', 1, 0, 'c')
'c'
は大文字と小文字が区別置き換えるためのものです。
「McDonald」のように、姓に大文字と小文字を混在させることもできます。 –
私は決して正規表現のエキスパートではなく、答えを2つの段階に分けなければなりませんでした。私はもっと能力の高い人が2つのステップを組み合わせることができると思います。しかし、これはトリックであり、名前や句読点の真中にある大文字、例えばオブライエンも考慮する。
select
regexp_replace(lowers_done,'\*[A-Z]','**') first_letters_only
from
(
select
regexp_replace('Tina McDonald O''Brian','[a-z]|[[:punct:]]','*') lowers_done
from
dual
)
出力:
T *** M ******* O ******
明らかに、これはサブクエリを使わなくても書くことができます。2つの別々の正規表現で何が起こっていたのかを明確に示すために、 –
それはセキュリティ上の理由のためだ場合は、マスキングを適用するDBMS_REDACTパッケージを使用することができます機密情報のパターンドキュメントはhere
私はそれがregexpソリューションではないことを認識しています。さらに、この機能はOracleからの追加ライセンスの対象となる可能性がありますが、オラクル社は重要なデータに対してPCI対応ソリューションに提案しています。
アスタリスク(REGEXP_REPLACE( 'Tina Frederich Piedro'、 '(\ w)\ w *'、 '\ 1 ***') 'の番号のみをハードコードすることができます。そうしないと、 '\ w *'部分を追加して、アスタリスクの正確な数で置き換えるコードを追加します。 –
FYI - \ wには、予期しない結果を返す可能性のある0-9とアンダースコア(さらに多分)が含まれています。 –