GARANTIR DESCONTO

Fórum separar parte de uma string via sql #277740

18/04/2005

0

Boa tarde!
Estou importando dados de uma tabela cliente que o campo cep origem tem 9 posições (16400-000) e na minha tabela contem 8 posicoes (16400000) como fazer via sql para extrair as 5 primeiras posicoes do cep e as 3 ultimas posicoes e concatenar, ou seja a minha dúvida é que comando eu utilizo para extrair parte de uma string assim como no delphi o comando copy.. .
Grato

Plácido


Placido

Placido

Responder

Posts

18/04/2005

Jowjow

select substring(cep from 1 for 5) || substring(cep from 6 for 8) as cep_concatenado
from tabela


Responder

Gostei + 0

18/04/2005

Paulo-serra

Eu já utilizei o substring e funcionou muito bem. No entanto peguei outros campos como CPF e CNPJ que também continham máscaras... aí preferi criar uma função que estraisse somente os números de uma determinada String.

function TForm1.ExtraiNumeros(str: String): String;
Var
num: String;
i: integer;
begin
num := ´´;
for I:=1 to length(str) do
If str[I] in ([´0´..´9´]) then
num := num + str[I];
result := num;
End;


Responder

Gostei + 0

18/04/2005

Gandalf.nho

Qual o seu banco de dados? Nem todos tem a função SUBSTRING.


Responder

Gostei + 0

18/04/2005

Placido

Utilizo o banco de dados firebird 1.5..
Veja minha codificação abaixo:
Se eu tiro a linha do subtring roda normal, com a linha do substring esta dando erro (type mismatch)


INSERT INTO ´:TorrezanPneus:CLIENTE´(CLI_CODIGO,
CLI_NOME,
cli_logradouroendereco,
cli_bairro,
cli_cidade,
cli_cep,
EMP_CODIGO)

SELECT tCODCLI,
NOME,
endERECOT,
bairro,
cidade,
substring(cep from 1 for 5)||substring(cep from 7 for 3),
tempresa
FROM ´:TorrezanFox:Clientes´

A linha substring esta errada??

Grato

Placido


Responder

Gostei + 0

18/04/2005

Rjun

Qual o tipo do campo CEP ?


Responder

Gostei + 0

18/04/2005

Placido

Rogerio o campo cep na tabela paradox esta definido como char(9) e na tabela destino char(8), ou seja na tabela origem esta gravado a mascara(xxxxx-xxx) e na destino (xxxxxxxx), quero eliminar o traço da tavbela paradox para gravar na tabela do firebird sem o traço.
Grato

Placido


Responder

Gostei + 0

19/04/2005

Placido

Bom dia!
Ainda não resolvi o problema de tirar a mascara do campo cep..
Estou aguardando a solução..
Grato


Responder

Gostei + 0

25/04/2005

Placido

Pessoal boa tarde!
Ainda não consegui resolver o problema de separar o traço(-) do campo cep, tentei rodar da forma como foi sugerido acima e da erro na linha 1 coluna 22 ou seja no from.
Veja o exemplo do meu comando:
select substring(cepi from 1 for 5) || substring(cepi from 7 for 8) as cep_concatenado
from cliente

Ou seja a variavel cepi contem 9 characteres ex (16400-030)

Pergunta não tem uma função tipo copy do delphi???

Se algume puder me ajudar agradeço.


Placido


Responder

Gostei + 0

25/04/2005

Rjun

Como você esta fazendo isso ? Lendo de paradox e gravando em Firebird. Quais componentes você esta usando ? Não seria mais fácil fazer via código ?


Responder

Gostei + 0

25/04/2005

Placido

Rogério obrigado pela atenção.
Estou importando dados de uma tabela paradox do cliente para o meu banco de dados firebird na tabela cliente.
Os campos normais está importando corretamente, acontece que o campo cep da tabela paradox contem a mascara no campo cep(16400-100) na minha tabela nao contem a mascara(16400100). Aminha dúvida é esta como gravar este campo separando o traço. Foram citados alguns exemplos mas não está dando certo.
Estou utilizando o utilitário sqlExplorer para fazer esta importação.
Já fiz de tudo mas não consegui.
Criei um campo temporario na minha tabela cliente o campo cep com 9 posiçoes importo da tabela paradox normal, fiz uma procedure para gravar o campo cep sem o traço mas não consegui, porque não sei qual o comando que eu devo usar para separar o traço da string.

Grato


Responder

Gostei + 0

25/04/2005

Rjun

Por que você não faz um programinha de conversão entao em Delphi ?


Responder

Gostei + 0

25/04/2005

Rômulo Barros

Pessoal boa tarde! Ainda não consegui resolver o problema de separar o traço(-) do campo cep, tentei rodar da forma como foi sugerido acima e da erro na linha 1 coluna 22 ou seja no from. Veja o exemplo do meu comando: select substring(cepi from 1 for 5) || substring(cepi from 7 for 8) as cep_concatenado from cliente Ou seja a variavel cepi contem 9 characteres ex (16400-030) Pergunta não tem uma função tipo copy do delphi??? Se algume puder me ajudar agradeço. Placido


[b:0b70cc95a8]Tem sim.[/b:0b70cc95a8]

Var
   Cep : String;
Begin
   Cep := Copy(MeuCepComFormatação,Inicio,Fim);
End;



Responder

Gostei + 0

25/04/2005

Placido

Em delphi eu sei fazer..o problema é que tenho vários clientes para fazer este tipo de importação, se eu conseguir via sql eu apenas vou rodar o script, você não acha que é muito mais prático???
Tenho certeza que tem a solução..
Vou continuar pesquisando..
Grato


Responder

Gostei + 0

26/04/2005

Placido

Continuo aguardando dicas para a solução do problema.
Grato
Plácido


Responder

Gostei + 0

26/04/2005

Kotho

Mas como você vai jogar os dados do Paradox para o IB??? Você não vai precisar de um programa para isso???


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar