Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia
Tenho um campo na base chamado DOCUMENTO, onde nele vem 3 informações:
Tais informações são separadas por " - ".
Existe alguma forma de eu separa este campo, no script, em 3 novos campos? Ja tentei utilizar o MID, porém nem sempre os campos tem o mesmo número de casas.
Desde já agradeço.
Um exemplo:
Teste:
LOAD
*,
SubField(campo, '-', 1) AS campo1,
SubField(campo, '-', 2) AS campo2,
SubField(campo, '-', 3) AS campo3;
LOAD * Inline [
campo
010101010 - 01 - 45
];
Bom dia Rodrigo,
Utilize o comando Subfield para fazer esta separação.
abs.
Como você obtêm eles ? através de uma carga SQL ?
Post sobre subfield
A carga é feita por SQL. Já solicitei a TI da empresa que faça a carga com os campos separados, mas fazem 4 meses e nada ainda.
Dei uma lida no tópico, porem o exemplo dado (pelo q entendi) é em 3 colunas diferentes. Quero separar uma coluna em 3.
Quero que, da primeira casa até o primeiro traço ( - ) , seja uma coluna, do primeiro traço até o segundo, outra coluna, e após o segundo traço, a terceira coluna.
Desculpe minha ignorância se entendi errado..
chegou a notar no primeiro load do exemplo:
(txt, codepage is 1252, embedded labels, delimiter is ';', msq);
se for um arquivo de texto, carrega ele utilizando o delimiter com o "-" ao invés do ";"
De fato, no post o subfield esta sendo usado pra outra coisa.
Um exemplo:
Teste:
LOAD
*,
SubField(campo, '-', 1) AS campo1,
SubField(campo, '-', 2) AS campo2,
SubField(campo, '-', 3) AS campo3;
LOAD * Inline [
campo
010101010 - 01 - 45
];
De uma olhada na função MID
Eu precisei ler dados de um CNAB, segue código de exemplo. O ideal se eles forem te mandar txt,fala para determinar que de posição x - y vai ser tal campo.
Subcaracter do caracter s. O resultado é um caracter iniciado no caractere n1, com o comprimento de n2 caracteres. Se n2 for omitido, a função retornará a parte mais à direita do caracter, a partir do caracter n1. As posições na seqüência são numeradas de 1 em diante.
[DADOS_CNAB_SEGMENTO_J]:
LOAD
mid(@1,1, 3 ) AS [CODIGO DO BANCO],
mid(@1,4, 4 ) AS [CODIGO DO LOTE],
mid(@1,8, 1 ) AS [TIPO DE REGISTRO],
mid(@1,9, 5 ) AS [NUMERO DO REGISTRO],
mid(@1,14,1 ) AS [SEGMENTO],
mid(@1,15,3 ) AS [TIPO DE MOVIMENTO],
mid(@1,18,3 ) AS [BANCO FAVORECIDO],
mid(@1,21,1 ) AS [MOEDA],
mid(@1,22,1 ) AS [DV],
mid(@1,23,4 ) AS [VENCIMENTO],
mid(@1,27,10) AS [VALOR],
mid(@1,37,25) AS [CAMPO LIVRE],
mid(@1,62,30) AS [NOME DO FAVORECIDO],
mid(@1,92,8) AS [DATA VENCTO],
mid(@1,100,15)AS [VALOR DO TÍTULO],
mid(@1,115,15)AS [DESCONTOS],
mid(@1,130,15)AS [ACRESCIMOS-CODIGO],
mid(@1,145,8) AS [DATA PAGAMENTO],
mid(@1,153,15)AS [VALOR PAGAMENTO],
mid(@1,162,15)AS [ZEROS],
mid(@1,183,20)AS [SEU NÚMERO],
mid(@1,203,13)AS [BRANCOS],
mid(@1,216,15)AS [NOSSO NÚMERO],
mid(@1,231,10)AS [OCORRENCIAS]
Deu certo.. Fiz conforme o exemplo que o Raphael postou, e ficou como queria.
Obrigado amigos pela ajuda.
DOCUMENTO:
LOAD Distinct
DOCUMENTO,
SubField(DOCUMENTO, '-', 1) AS NR_REQUISIÇÃO,
SubField(DOCUMENTO, '-', 2) AS EMITENTE_C,
SubField(DOCUMENTO, '-', 3) AS EMITENTE_D,
SubField(DOCUMENTO, '-', 2)&' - '&SubField(DOCUMENTO, '-', 3) AS EMITENTE
FROM
E:\QVD\Fato_Orcamento_Realizado.qvd
(qvd);