separar parte de uma string via sql
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
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
Curtidas 0
Respostas
Jowjow
18/04/2005
select substring(cep from 1 for 5) || substring(cep from 6 for 8) as cep_concatenado
from tabela
from tabela
GOSTEI 0
Paulo-serra
18/04/2005
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;
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;
GOSTEI 0
Gandalf.nho
18/04/2005
Qual o seu banco de dados? Nem todos tem a função SUBSTRING.
GOSTEI 0
Placido
18/04/2005
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
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
GOSTEI 0
Rjun
18/04/2005
Qual o tipo do campo CEP ?
GOSTEI 0
Placido
18/04/2005
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
Grato
Placido
GOSTEI 0
Placido
18/04/2005
Bom dia!
Ainda não resolvi o problema de tirar a mascara do campo cep..
Estou aguardando a solução..
Grato
Ainda não resolvi o problema de tirar a mascara do campo cep..
Estou aguardando a solução..
Grato
GOSTEI 0
Placido
18/04/2005
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
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
GOSTEI 0
Rjun
18/04/2005
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 ?
GOSTEI 0
Placido
18/04/2005
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
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
GOSTEI 0
Rjun
18/04/2005
Por que você não faz um programinha de conversão entao em Delphi ?
GOSTEI 0
Rômulo Barros
18/04/2005
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;
GOSTEI 0
Placido
18/04/2005
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
Tenho certeza que tem a solução..
Vou continuar pesquisando..
Grato
GOSTEI 0
Placido
18/04/2005
Continuo aguardando dicas para a solução do problema.
Grato
Plácido
Grato
Plácido
GOSTEI 0
Kotho
18/04/2005
Mas como você vai jogar os dados do Paradox para o IB??? Você não vai precisar de um programa para isso???
GOSTEI 0
Placido
18/04/2005
Continuo aguardando dicas para a solução do problema.
Na importação de uma tabela paradox para uma tabela firebird de um campo com mascara;cep,cpf,cnpj.etc..
Grato
Plácido
GOSTEI 0
Placido
18/04/2005
Não preciso de um programa para importar do paradox para o firebird, isto eu já faço via sql, ou meu problema está em eliminar a mascara do campo cep..
Grato
Plácido
Grato
Plácido
GOSTEI 0
Cabelo
18/04/2005
Colega..
seguinte :
Você deve fazer um select na tabela do paradox assim :
crie uma variável na stored procedure
select substring(campo from 1 for 5)||
substring(campo from 7 for 2) as D_TESTE from tabela
armazene este resltado numa variável
depois dê o insert passando a variável
seguinte :
Você deve fazer um select na tabela do paradox assim :
crie uma variável na stored procedure
select substring(campo from 1 for 5)||
substring(campo from 7 for 2) as D_TESTE from tabela
armazene este resltado numa variável
depois dê o insert passando a variável
GOSTEI 0
Placido
18/04/2005
Junior bom dia!
Obrigado pela dica, vou testar e retorno.
Grato
Plácido
Obrigado pela dica, vou testar e retorno.
Grato
Plácido
GOSTEI 0
Placido
18/04/2005
Boa noite resolvi o meu problema, estava rodando o script no ibexpert, não sei o que estava faltando no meu computador,criei uma procedure e funcionou beleza, utilizo o banco de dados firebird 1.5.
Grato
Plácido
Grato
Plácido
GOSTEI 0
Tiredmonkey
18/04/2005
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;
so corrigindo Cep := Copy(MeuCepComFormatação, Inicio, QUANTIDADE DE CARACTERES);
GOSTEI 0