去除SQL特殊字符

3

我有一个表格中的一列,其中包含带附加字符串的特殊字符。同一列还包含数字。我只对从该列中提取数字感兴趣,例如:

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

我该如何在SQL或PL/SQL中实现这个功能?
5个回答

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

应该是'[^0-9]+'而不是* - WBAR

1

PL/SQL有一个REGEX_REPLACE函数,您可以使用它来将任何非数字的内容替换为空字符串。关于REGEX_REPLACE的详细信息可以在这里找到:http://psoug.org/reference/regexp.html


1

如果不知道您的数据的完整性,可以尝试以下代码:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接