2011-12-08 254 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

不知道你的數據的完整性,這樣的事情可能會做什麼你問:

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