Inserir um ponto em uma string Firebird

SQL

09/03/2022

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

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

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) <> '.'



GOSTEI 1

Mais Respostas

Emerson Nascimento

Emerson Nascimento

09/03/2022

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?
GOSTEI 0
Assis Ferreira

Assis Ferreira

09/03/2022

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?
GOSTEI 0
Assis Ferreira

Assis Ferreira

09/03/2022

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
GOSTEI 0
Assis Ferreira

Assis Ferreira

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) <> '.'






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.

GOSTEI 0
Emerson Nascimento

Emerson Nascimento

09/03/2022

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.
GOSTEI 0
POSTAR