删除特殊字符SQL

时间:2011-12-08 22:06:21

标签: sql oracle plsql

我在表格中有一列,其中包含带有附加字符串的特殊字符。同一列也包含数字。我只是在提取该列中的数字,例如

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

我如何在SQL或PL / SQL中执行此操作?

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

答案 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