With, Substr e Instr
Neste exemplo será mostrado como utilizar as funções With, Substr e Instr combinadas. Vamos dividir em colunas, as informações de uma nota fiscal parametrizadas por posição.
Texto com as informações:
'NF 123456 - DT 07/10/2019 - VL 37,99'
Código:
WITH nota AS (SELECT 'NF 123456 - DT 07/10/2019 - VL 37,99' AS dados FROM dual)
SELECT SUBSTR(dados, INSTR(dados, 'NF')+3, INSTR(dados, '-')-(INSTR(dados, 'NF')+4)) AS numeronf,
SUBSTR(dados, INSTR(dados, 'DT')+3, INSTR(dados, '-', 1, 2)-(INSTR(dados, 'DT')+4)) AS dataemissao,
SUBSTR(dados, INSTR(dados, 'VL')+3) AS valortotal
FROM nota
Retorno:
| NUMERONF | DATAEMISSAO | VALORTOTAL |
---------------------------------------
| 123456 | 07/10/2019 | 37,99 |
Neste caso:
- With: está sendo utilizado para que não seja preciso retornar o texto em todas as colunas, evitando repetir código e tempo de processamento;
- Substr: está retornando dados a partir de uma posição até outra informadas do texto;
- Instr: retorna a posição do texto, onde se encontra o caractere ou conjunto de caracteres informado, para usar a posição no Substr;