0

以下の例では:

WITH X(DATA, ORD)
AS
(         
Select '@asdf@'   , 01 FROM DUAL UNION
Select '\qw@er\'  , 02 FROM DUAL UNION
Select '-zxcv-@' , 03  FROM DUAL UNION
Select '_poiu@' ,  04 FROM DUAL 
)

SELECT
REGEXP_REPLACE(DATA, '[@\-_]', '', 1)
FROM X
ORDER BY ORD;  
;  

私はこの応答を受け取ります:

asdf 
qwer
-zxcv- 
poiu

ただし、「@」、「\」、「-」、または「_」は、文字列の途中ではなく最初の文字である場合にのみ置き換えたいと思います。さらに、「-」文字では機能しません。

4

2 に答える 2

2

次の正規表現が機能するはずです: ^[@\\_-]. ダッシュ-は文字クラスの最後の文字でなければならないことに注意してください。

WITH X AS (
  SELECT '@asdf@' AS data, 01 AS ord FROM DUAL UNION
  SELECT '\qw@er\', 02 FROM DUAL UNION
  SELECT '-zxcv-@', 03  FROM DUAL UNION
  SELECT '_poiu@',  04 FROM DUAL 
)
SELECT REGEXP_REPLACE(DATA, '^[@\\_-]')
 FROM X
ORDER BY ORD
于 2015-02-10T22:56:11.950 に答える