With, Substr, Split_part e Strpos
Neste exemplo será mostrado como utilizar as funções With, Substr e Split_part e Strpos 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'
SQL:
WITH nota AS (SELECT 'NF 123456 - DT 07/10/2019 - VL 37,99' AS dados)
SELECT substr(split_part(dados, 'NF', 2), 2, strpos(split_part(dados, 'NF', 2), '-')-3) AS numeronf,
substr(split_part(dados, 'DT', 2), 2, strpos(split_part(dados, 'DT', 2), '-')-3) AS dataemissao,
substr(split_part(dados, 'VL', 2), 2) 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;
- Split_part: retorna parte do texto a partir do caractere ou conjunto de caracteres informados;
- Strpos: retorna a posição do texto, onde se encontra o caractere ou conjunto de caracteres informado, para usar a posição no Substr;