テーブルに、文字列が付加された特殊文字を含む列があります。同じ列には数字も含まれています。その列から数値を抽出する場合にのみ役に立ちます。特殊文字の削除SQL
Name-3445 => 3445; Out-90 => 90; 786 => 786
これはSQLまたはPL/SQLでどのように行いますか?
テーブルに、文字列が付加された特殊文字を含む列があります。同じ列には数字も含まれています。その列から数値を抽出する場合にのみ役に立ちます。特殊文字の削除SQL
Name-3445 => 3445; Out-90 => 90; 786 => 786
これはSQLまたはPL/SQLでどのように行いますか?
SELECT regexp_replace(some_column, '[^0-9]*', '') as clean_value
FROM your_table
あなたはREGEXP_SUBSTR関数を使用することができます。 http://docs.oracle.com/cd/B14117_01/server.101/b10759/functions116.htm
PL/SQLを使用すると、空の文字列と数字ではないものを置き換えるために使用することができregex_replaceの機能を持っています。 regex_replaceの上の詳細については、ここで見つけることができます:http://psoug.org/reference/regexp.html
データの整合性を知らなくても、このようなものは、あなたが求めているものを行う可能性があります:
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 '%-%'
REGEXP_REPLACE(<Your_String>,'[^[:alnum:]'' '']', NULL)
例:
SELECT REGEXP_REPLACE('##$$$123&&!!__!','[^[:alnum:]'' '']', NULL) FROM dual;
出力:
123
'' [^ 0-9] + ''' ''でなければなりません – WBAR