sexta-feira, 25 de agosto de 2017

Oracle: Como fazer um "Split" em uma string

O caso é simples: em um parâmetro de uma procedure, eu recebo uma sequencia de números separados por vírgula para ser usado em uma condição IN. Mas o problema é que Oracle não tem uma função que separa os números conforme as vírgulas. Como resolver isso? Você pode fazer o seguinte:

select 
    regexp_substr('SMITH,ALLEN,WARD,JONES','[^,]+', 1, level) 
from dual
connect by 
    regexp_substr('SMITH,ALLEN,WARD,JONES', '[^,]+', 1, level) is not null;

Isso vai separar as os itens em linhas de tabela. Você pode usar essa consulta na condicional do IN para indicar que o campo tem que estar naquela string.

Nenhum comentário:

Postar um comentário