Skip to main content
Announcements
Introducing a new Enhanced File Management feature in Qlik Cloud! GET THE DETAILS!
cancel
Showing results for 
Search instead for 
Did you mean: 
MarceloMachado1
Contributor
Contributor

Extrair texto de um campo de observações

Boa noite,

Andei pesquisando e não encontrei nada que ajude ao meu problema, tenho um campo de "Observação" em minha tabela, onde tenho que extrair o código do vendedor, sei os códigos, o problema é que eles podem aparecer em várias posições diferentes no campo, existe algum modo de extrair apenas os valores que preciso? independente de sua posição no campo?

1 Solution

Accepted Solutions
paulinhok14
Creator
Creator

Marcelo, se eu entendi o seu problema, sugiro utilizar a função Index().

Exemplo:

Index ( SeuCampo, '1006' )

Esta função irá retornar a posição na string onde haja a correspondência exata que vc definiu no segundo parâmetro, à partir dai é fazer uma condicional para definir se encontrou ou não o valor.

 

View solution in original post

7 Replies
vandrecarlos
Contributor III
Contributor III

Bom dia, amigo!

Talvez a função KeepChar possa te ajudar!


Atenciosamente,

Vandré Carlos

MarceloMachado1
Contributor
Contributor
Author

'Vandré, até utilizar esta função, mas não conseguiu o resultado esperado, olha o resultado desta linha:

infCpl infCpl_

' 1006 ' 19424 10 15 4 11 0 , 6 4 | FALTAS E AVARIAS DE MERCADORIAS INFORMAR A TRANSPORTADORA

Eu busco o '1015' e ele retorna o '1006', imagina que ele está verificando todos os números de campo e mostra o resultado ....

Eu tenho uma sequência de códigos que usa o script abaixo:

IF (KeepChar ('1007', [NFe / infNFe / infAdic / infCpl]) = '1006', '1006',
IF (KeepChar ('1009', [NFe / infNFe / infAdic / infCpl]) = '1009', '1009',
IF (KeepChar ('1015', [NFe / infNFe / infAdic / infCpl]) = '1015', '1015',
IF (KeepChar ('1017', [NFe / infNFe / infAdic / infCpl]) = '1017', '1017',
IF (KeepChar ('1018', [NFe / infNFe / infAdic / infCpl]) = '1018', '1018',
IF (KeepChar ('1019', [NFe / infNFe / infAdic / infCpl]) = '1019', '1019', '',) como infCpl,

Para algumas linhas apresenta o resultado esperado ... mais para outros elementos apresenta outro resultado ...'

vandrecarlos
Contributor III
Contributor III

Amigo,

 

Ao analisar o seu IF, percebo que a condição '1006' também existe, e existe antes mesmo do check do valor '1015'.

Ou seja, o script faz o check primeiro procurando 1006 e encontra, logo ele não vai te retornar o 1015.

Tente inverter os valores do seu IF, começando do maior para o menor e veja se traz retorno positivo.

 

Atenciosamente,

Vandré Carlos

MarceloMachado1
Contributor
Contributor
Author

Obrigado pela atenção Vandré, 

Más também fiz este teste e continua com o problema, funciona para muitas linhas, más não todas. O ideal é que conseguisse pegar somente o valor desejado de forma completa, ou seja, apresentar somente quando o valor atingir sua busca exata e não pegar partes dos textos e montar o valor encontrado que é o que ocorre atualmente.

Imaginei que colocando entre 'aspas' fosse apresentar somente este valor,,, será se existe alguma forma de fixar o valor nesta busca?

paulinhok14
Creator
Creator

Marcelo, se eu entendi o seu problema, sugiro utilizar a função Index().

Exemplo:

Index ( SeuCampo, '1006' )

Esta função irá retornar a posição na string onde haja a correspondência exata que vc definiu no segundo parâmetro, à partir dai é fazer uma condicional para definir se encontrou ou não o valor.

 

MarceloMachado1
Contributor
Contributor
Author

Desculpe minha ignorância, más esta função traz a posição do texto que
preciso extrair do campo, como efetivamente faço a extração?
MarceloMachado1
Contributor
Contributor
Author

Obrigado... fiz umas mudanças e utilizei esta função e tudo deu certo....