Удаление специального символа SQL - PullRequest
2 голосов
/ 09 декабря 2011

У меня есть столбец в таблице, который содержит специальные символы с прикрепленной строкой.В этом же столбце содержатся цифры.Меня интересует только извлечение чисел из этого столбца, например

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

Как мне это сделать в SQL или PL / SQL?

Ответы [ 5 ]

5 голосов
/ 09 декабря 2011
SELECT regexp_replace(some_column, '[^0-9]*', '') as clean_value
FROM your_table
0 голосов
/ 23 июня 2013
REGEXP_REPLACE(<Your_String>,'[^[:alnum:]'' '']', NULL)

Пример:

SELECT REGEXP_REPLACE('##$$$123&&!!__!','[^[:alnum:]'' '']', NULL) FROM dual;

Вывод:

123
0 голосов
/ 09 декабря 2011

Не зная целостности ваших данных, что-то подобное может сделать то, что вы просите:

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 голосов
/ 09 декабря 2011

PL / SQL имеет функцию REGEX_REPLACE, которую вы можете использовать для замены всего, что не является цифрой, пустой строкой.Подробности о REGEX_REPLACE можно найти здесь: http://psoug.org/reference/regexp.html

0 голосов
/ 09 декабря 2011

Вы можете использовать функцию regexp_substr: http://docs.oracle.com/cd/B14117_01/server.101/b10759/functions116.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...