2017-05-12 3 views
0

を含まない英数字以外の文字を持つレコードを返すための正規表現パターンがサンプル列です:オラクル - ここでは、スペース

+---------------+ 
|  NAME  | 
+---------------+ 
| Jim Jo'nes | 
| John $mith | 
| Leroy Jenkins | 
| Tom & Jerry | 
+---------------+ 

私は含まない英数字以外の文字が含まれるフィールドを返す正規表現パターンを作成する必要がありますスペース。これはスペースで区切られた複数の名前を含むことができる名前フィールドです。

私の期待される結果セットはこれです:

[^[:alnum:][:space:]] 

Jim Jo'nes 
John $mith 
Tom & Jerry 

答えて

1

[^ ... ]オペレータ(非一致文字リスト)英数字に適用される([:alnum:])とスペース([:space:])文字クラスを使用しますデモ:https://regex101.com/r/VOzqFn/1

+0

名前は空白で、他の英数字はありません。 – Jake

0

REGEXP_LIKE Con否定文字とditionは、私が最初にsubstition変数を識別するために'&'の使用をオフにします

を設定します。

a-z, A-Z, 0-9, \s (the escape version of a space character) 

set define off; 

次へ]を、私はちょうどあなたが探してされていないすべての文字を識別します

[^a-zA-Z0-9 ] 

私はその後否定文字セットを作成します

私の解決策は次のとおりです。

[email protected]>WITH names AS (
    2  SELECT 
    3   'Jim Jo''nes' name 
    4  FROM 
    5   dual 
    6  UNION ALL 
    7  SELECT 
    8   'John $mith' name 
    9  FROM 
10   dual 
11  UNION ALL 
12  SELECT 
13   'Leroy Jenkin' name 
14  FROM 
15   dual 
16  UNION ALL 
17  SELECT 
18   'Tom & Jerry' name 
19  FROM 
20   dual 
21 ) SELECT 
22  * 
23 FROM 
24  names 
25 WHERE 
26   1 = 1 
27  AND 
28   REGEXP_LIKE (names.name,'[^a-zA-Z0-9 ]'); 


name   
---------- 
Jim Jo'nes 
John $mith 
Tom & Jerry