solução regex para selecionar o valor específico da lista separada por vírgula com nulls
ao extrair o valor do Nth de uma lista de vírgula e separação usando regexp_subsstr. (), o manuseio de valores nulos pode ser complicado. Aqui está um exame detalhado do problema e uma solução abrangente. '[^,]', 1, 2) dados de dual; D - 2
Esta consulta recupera com sucesso o segundo valor não nulo ("2") da lista usando a expressão regular [^,]. No entanto, quando o segundo valor é nulo, a consulta retorna o terceiro item:
SQL> select REGEXP_SUBSTR('1,2,3,4,5,6', '[^,] ', 1, 2) data from dual; D - 2
Para resolver esse problema, é necessário um regex mais flexível para permitir caracteres opcionais:
SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,] ', 1, 2) data from dual; D - 3
No entanto, este regex também falha para números após o null. 4,5 ',' (.*?) (, | $) ', 1, 2, null, 1)
SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,]*', 1, 4) data from dual; D - 3
data -----
para encapsular esta solução em uma função reutilizável, considere o seguinte código:
REGEX_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)
Esta função pode ser chamada assim:
Data ----
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3