Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá, pessoal.
Estou com dificuldade de extrair informações de um campo após aplicação de algumas regras.
Tenho um campo que segue mais ou menos um padrão:
0000005-88.1500.1.23.0000 (15000010000050ABC)
Tem vezes que o número entre parênteses não existe mas os parênteses sim:
0000007-89.1520.1.25.0000 ()
Tem vezes que o parênteses não está presente:
0000001-53.1900.1.27.0000
Tem vezes que o número não tem parênteses mas também não segue a quantidade de caracteres do exemplo acima:
00011/1645-0052101-53.0089.5.10.0004
Preciso criar uma lógica para quando existir o "ABC", vir o número completo dentro dos parênteses, ou seja, 15000010000050ABC. 17 caracteres contando com o "ABC". Isso é padrão, sempre que tiver o ABC, o número será formado pelos 14 caracteres à esquerda do ABC.
Quando não tiver "ABC" teria que vir o número disponível mas sem parênteses, apenas o número mesmo sem o pontos, tracinhos e barras. Exemplo: 00047200500927015319895100004 e 00000058815001230000.
Estou usando o TextBetween para trazer apenas o que está entre os parênteses mas tem vezes que os parênteses estão sem nada. Empaquei com várias funções e combinações de funções (right/index/mid/textbetween, purgechar/if) mas nada está funcionando e não estou conseguindo sair do lugar. =/
Resumo: considerar o número que estiver dentro dos parênteses, se não tiver, considerar o disponível.
Alguém tem alguma sugestão?
Desde já, agradeço a atenção. 😉
Boa noite,
Veja se isso pode lhe ajudar.
LOAD
if(WildMatch(campo,'*ABC*')=1,TextBetween(campo,'(',')'), PurgeChar(campo,'-.()/')) as teste,
* INLINE [
campo
0000005-88.1500.1.23.0000 (15000010000050ABC)
0000005-88.1500.1.13.0000 (15000010100050ABC)
0000007-89.1520.1.25.0000 ()
0000001-53.1900.1.27.0000
00011/1645-0052101-53.0089.5.10.0004
];
Boa noite,
Veja se isso pode lhe ajudar.
LOAD
if(WildMatch(campo,'*ABC*')=1,TextBetween(campo,'(',')'), PurgeChar(campo,'-.()/')) as teste,
* INLINE [
campo
0000005-88.1500.1.23.0000 (15000010000050ABC)
0000005-88.1500.1.13.0000 (15000010100050ABC)
0000007-89.1520.1.25.0000 ()
0000001-53.1900.1.27.0000
00011/1645-0052101-53.0089.5.10.0004
];
Agradeço, Danilo.
Fiz uma pequena adaptação pois no meu modelo de dados não estava funcionando. O que achei bem esquisito pois carreguei da mesma forma que vc, por tabela inline, e a lógica funcionou perfeitamente.
Ficou da seguinte forma:
IF(WildMatch([Campo],'ABC','*ABC*','ABC*','*ABC'),
TextBetween([Campo],'(',')'),PurgeChar([Campo],'-.()/')) AS teste,
Obrigada. Ajudou demais!