Páginas

segunda-feira, 3 de outubro de 2016

[Oracle] - Utilizando regex para consultas


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