Concatenação Strings - Firebird

Forum sobre SQL.

Moderador: Moderadores

raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Concatenação Strings - Firebird

Mensagem por raquelreis »

Bom dia,

Desculpe se postei a dúvida na seção errada.

Estou com problemas com firebird. Não conheço o banco muito bem, mas conheço alguma coisa de SQL.
Estou tentando realizar um simples Update na minha tabela de produto e encontro vários erros.
1) erro valores nulos, coloque uma cláusula where e resolvi.
Mas agora está com erro de overflow (Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.-Estouro aritmético ou divisão por zero ocorreu.
arithmetic exception, numeric overflow, ou truncamento string.)

Código: Selecionar todos

/*Erro*/
update produto p
set p.ds_produto = p.ds_produto||' - '||p.ds_complemento_produto
where p.ds_produto is not null  and p.ds_complemento_produto is not null

/*Funciona*/
select p.ds_produto||' - '||p.ds_complemento_produto as Descricao
from produto p
where p.ds_produto is not null  and p.ds_complemento_produto is not null

/*Funciona*/
update produto p
set p.ds_produto = p.ds_produto||' - '||p.ds_complemento_produto
where p.ds_produto is not null  and p.ds_complemento_produto is not null
and p.cd_produto = 22 /*produto aleatório*/
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Concatenação Strings - Firebird

Mensagem por raquelreis »

Dúvida sanada
Bom dia

Acredito que este erro pode estar ocorrendo porque o resultado da concatenação possui uma quantidade de caracteres maior que a quantidade de caracteres aceita pelo campo ds_produto.
Se o objetivo for truncar o restante, acho que você pode utilizar a função Substring mais ou menos como segue (supondo tamanho de 40 caracteres):

Código: Selecionar todos

SET p.ds_produto = SUBSTRING(p.ds_produto || ' - ' || p.ds_complemento_produto FROM 1 FOR 40)


Espero que ajude.
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Concatenação Strings - Firebird

Mensagem por Maligno »

Posso estar fazendo chover no molhado, mas tenho uma dica, que se for redundante pra você, certamente poderá ajudar outros colegas que fazem ou farão uso do Firebird. O programa IBExport (grátis na versão personal) ajuda bastante a fazer testes com SQLs. Melhor e mais rápido que compilar e testar no programa alvo. Além do que, dá pra fazer um "roll back" para não alterar nada no banco de dados.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder