0

このような数字にダッシュを追加する Oracle REGEXP_REPLACE ステートメントを書くのを手伝ってくれる人はいますか...

5310009618390
5310-00-961-8390

私は regexp_replace が必要だと思っていますが、そうではないかもしれません。両方を試しましたが、どこにも行きませんでした。

select replace(t.column, 5310009618390, '-') from table t
4

1 に答える 1

2

まず、式を作成する方法を理解するために、何をしたいのかを説明できる必要があります。たとえば、次のように表示されます: 最初の 4 つの数字、次に次の 2 つの数字、次に次の 3 つの数字、次に次の 4 つの数字をグループ化します。これが正確な場合:

select regexp_replace('5310009618390', '(\d{4})(\d{2})(\d{3})(\d{4})', '\1-\2-\3-\4') from dual;

この式は、上記のようにグループを「記憶」し、間にダッシュを付けて表示します。

表現を構築するのに役立つので、やりたいことを説明できることが重要です。つまり、ルールが最初の 4 文字 (数字ではなく) をグループ化することである場合、式は異なります。

この例は REGEXP_REPLACE 用であり、操作するデータセットのサイズによってはコストがかかることに注意してください。ルールが単純な場合は、SUBSTR() を使用して切り刻み、断片を連結し、メラニーが提案するようにダッシュを追加する方が速い場合があります (連結には + ではなく || のみを使用します)。

于 2015-05-14T16:00:51.100 に答える