Inserir um ponto em uma string Firebird
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.
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
Curtidas 0
Melhor post
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):
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
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?
não é melhor fazer isso somente ao apresentar a informação?
GOSTEI 0
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?
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
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?
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
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):
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
09/03/2022
antes de executar o update, faça um select pra ver se o resultado será o esperado
se tudo estiver correto, faça o update
usando o substring não acontecerá a anomalia que você citou no caso de ter o campo preenchido com menos de 4 caracteres.
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