我在表中包含帶有附加字符串的特殊字符的列。同一列也包含數字。我只是在從該列中提取數字,例如刪除特殊字符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