我在表格中有一列,其中包含带有附加字符串的特殊字符。同一列也包含数字。我只是在提取该列中的数字,例如
Name-3445 => 3445; Out-90 => 90; 786 => 786
我如何在SQL或PL / SQL中执行此操作?
答案 0 :(得分:5)
SELECT regexp_replace(some_column, '[^0-9]*', '') as clean_value
FROM your_table
答案 1 :(得分:0)
您可以使用regexp_substr函数: http://docs.oracle.com/cd/B14117_01/server.101/b10759/functions116.htm
答案 2 :(得分:0)
PL / SQL有一个REGEX_REPLACE函数,您可以用它来替换任何非空数字符号的数字。有关REGEX_REPLACE的详细信息,请访问:http://psoug.org/reference/regexp.html
答案 3 :(得分: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 '%-%'
答案 4 :(得分:0)
REGEXP_REPLACE(<Your_String>,'[^[:alnum:]'' '']', NULL)
示例:
SELECT REGEXP_REPLACE('##$$$123&&!!__!','[^[:alnum:]'' '']', NULL) FROM dual;
输出:
123