Bom pessoal, essa postagem é para auxiliar na utilização de expressões regulares no Oracle, facilitando a codificação de procedimentos armazenados e funções:
-- SOMENTE DIGITOS
SELECT regexp_replace('João 23 Paulo 11 Pinheiro 78','[^\/[:digit:]]') AS NUMEROS FROM DUAL;
--ADICIONA ESPAÇO ONDE FALTA
WITH mydata(str) AS
(
SELECT ' a b c d efg h' FROM DUAL UNION ALL
SELECT ' a b c d e f g h ' FROM DUAL UNION ALL
SELECT 'a b c d e f g h' FROM DUAL UNION ALL
SELECT 'abcdefgh' FROM DUAL
)
SELECT CASE INSTR(TRIM(str),' ')
WHEN 0 THEN
str
ELSE
TRIM(REGEXP_REPLACE(str,'(\S)\s*','\1 '))
END AS str
FROM mydata;
--REMOVER ESPAÇOS DUPLOS
WITH NOME(STR) AS
(
SELECT 'ana clara de souza prado' FROM DUAL UNION ALL
SELECT 'PEDRO LOPES PINHEIRO' FROM DUAL UNION ALL
SELECT 'mARIA DA gloria PINHEIRO' FROM DUAL
)
SELECT REGEXP_REPLACE(UPPER(TRIM(STR)),'( ){2,}', ' ') AS STR
FROM NOME;
--ALTERA STRING
SELECT REGEXP_REPLACE('I cannot see you.','\.',' in the dark.')
REGEXT_SAMPLE
FROM dual;
Espero que estes exemplos ajudem. Graça e Paz sejam com todos.
Nenhum comentário:
Postar um comentário