2011-12-08 16 views
2

テーブルに、文字列が付加された特殊文字を含む列があります。同じ列には数字も含まれています。その列から数値を抽出する場合にのみ役に立ちます。特殊文字の削除SQL

Name-3445 => 3445; Out-90 => 90; 786 => 786 

これはSQLまたはPL/SQLでどのように行いますか?

答えて

5
SELECT regexp_replace(some_column, '[^0-9]*', '') as clean_value 
FROM your_table 
+0

'' [^ 0-9] + ''' ''でなければなりません – WBAR

0

PL/SQLを使用すると、空の文字列と数字ではないものを置き換えるために使用することができregex_replaceの機能を持っています。 regex_replaceの上の詳細については、ここで見つけることができます:http://psoug.org/reference/regexp.html

0

データの整合性を知らなくても、このようなものは、あなたが求めているものを行う可能性があります:

select CAST(SUBSTRING(_COLUMNNAME_,CHARINDEX('-', _COLUMNNAME_),1000), Integer) as ColumnName 
from tblTable where _COLUMNNAME_ like '%-%' 
union all select CAST(_COLUMNNAME, Integer) as ColumnName 
from tblTable where _COLUMNNAME_ not like '%-%' 
0
REGEXP_REPLACE(<Your_String>,'[^[:alnum:]'' '']', NULL) 

例:

SELECT REGEXP_REPLACE('##$$$123&&!!__!','[^[:alnum:]'' '']', NULL) FROM dual; 

出力:

123 
関連する問題