Inserir um ponto em uma string Firebird

09/03/2022

0

SQL

Bom dia amigos,

tenho um campo chamado isscodigo do tipo string com 4 posiçoes:

o campo atual está assim xxxx
preciso que fique assim xx.xx

tentei assim.

UPDATE
ISSQN
SET
isscodigo = LEFT(isscodigo,2) || ''''.''''
WHERE

mas o retorno ficou assim: xx.
Assis Ferreira

Assis Ferreira

Responder

Post mais votado

09/03/2022

se o conteúdo do campo já ocupa as 4 posições será necessário, antes de incluir o ponto, aumentar para 5 pocições.

depois basta fazer (suponho que esteja usando FirebirdSQL):
UPDATE ISSQN SET isscodigo = LEFT(isscodigo,2) || ''''.'''' || RIGHT(isscodigo,2)
WHERE SUBSTRING(isscodigo from 3 for 1) <> '.'



Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

09/03/2022

Emerson Nascimento

se o campo tem 4 posições, ao colocar o '.' você perderá o último caractere.
não é melhor fazer isso somente ao apresentar a informação?
Responder

09/03/2022

Assis Ferreira

se o campo tem 4 posições, ao colocar o '.' você perderá o último caractere.
não é melhor fazer isso somente ao apresentar a informação?



Na verdade precisaria editar mesmo, tem alguma idéia melhor que a minha?
Responder

09/03/2022

Assis Ferreira

se o campo tem 4 posições, ao colocar o '.' você perderá o último caractere.
não é melhor fazer isso somente ao apresentar a informação?



Na verdade precisaria editar mesmo, tem alguma idéia melhor que a minha?


Tenho que inserir esse ponto mesmo! Tenho que enviar ele e nao queria fazer em tempo de execução. queria já deixar salvo no banco. Queria já mudar
para evitar problemas
Responder

09/03/2022

Assis Ferreira

se o conteúdo do campo já ocupa as 4 posições será necessário, antes de incluir o ponto, aumentar para 5 pocições.

depois basta fazer (suponho que esteja usando FirebirdSQL):
UPDATE ISSQN SET isscodigo = LEFT(isscodigo,2) || ''''.'''' || RIGHT(isscodigo,2)
WHERE SUBSTRING(isscodigo from 3 for 1) <> '.'






Obrigado, deu certo. mas tive que tirar as aspas duplas ''''.''''

só deu um inesperado resultado, mas foi pq também nao mencionei aqui.

tenho campos com 3 posiçoes xxx

entao se o campo fosse 321, ele repete o o numero antes da virgula, ficando assim: 32.21
mas está bom assim
Obrigado.

Responder

09/03/2022

Emerson Nascimento

antes de executar o update, faça um select pra ver se o resultado será o esperado
SELECT isscodigo, LEFT(isscodigo,2) || '.' || SUBSTRING(isscodigo from 3 for 2) novocodigo FROM ISSQN

se tudo estiver correto, faça o update
UPDATE ISSQN SET isscodigo = LEFT(isscodigo,2) || '.' || SUBSTRING(isscodigo from 3 for 2)

usando o substring não acontecerá a anomalia que você citou no caso de ter o campo preenchido com menos de 4 caracteres.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar