Como Deletar um caractere de um camo

Firebird

28/06/2014

usei um concatenar para acrescentar um "0" zero em compo. Ex: numerodocumento: 12345 queria que ficasse numerodocumento: 012345

usei:
update flan set numerodocumento = '0' || numerodocumento where dataemissao<'30.04.2014'

Só que tinha alguns documentos que já tinha esse "0" zero e ficou com um zero a mais. Ex: 0012345

Queria saber como faço para desconcatenar ou seja só tirar um '0' zero.

Tentei usar o replace:
UPDATE flan
SET numerodocumento = REPLACE(numerodocumento,'0','')
WHERE dataemissao<'30.04.2014'

Ficando: Ex. 12345

Só que ele tira todos dos '0' zeros eu queria tirar só um. Ex: 012345

Estou usando um bando fdb no ibexpert
Dalton_bat

Dalton_bat

Curtidas 0

Melhor post

William

William

29/06/2014

Dalton estou mudando sua dúvida para sala Firebird, atualmente você está na sala do MySQL e certos comandos são proprietários para o MySQL e não serão reconhecidos pelo Firebird.
GOSTEI 1

Mais Respostas

William

William

28/06/2014

Respondendo sua dúvida, essa instrução SQL deve ajudar:

UPDATE flan SET numerodocumento = SUBSTRING(numerodocumento FROM 2 FOR CHAR_LENGTH(numerodocumento))
WHERE SUBSTRING(numerodocumento FROM 1 FOR 2) = '00'


Observe que só serão alterados os campos em que a posição inicial 1 e 2 possuírem '0', ou seja '00', acredito que seja o seu caso. Copio o texto do campo a partir da posição 2 porque está condicionado a somente trazer campos com '00'.

Estou supondo que o seu campo numerodocumento seja CHAR ou VARCHAR.
GOSTEI 1
Dalton_bat

Dalton_bat

28/06/2014

Obrigado deu certinho. Mas, e se for para eu colocar mais uma condição como faço? Por exemplo: vou quer fazer isso só se o campo codtdo = '01' . Tentei acrescentar and
mas, não funcionou retornou:
Plan
PLAN (FLAN INDEX (FKFLAN_CODTDO))

------ Performance info ------
Prepare time = 0ms
Execute time = 0ms
Current memory = 10.357.232
Max memory = 11.550.176
Memory buffers = 2.048
Reads from disk to cache = 0
Writes from cache to disk = 0
Fetches from cache = 7
GOSTEI 0
William

William

28/06/2014

Você quer ADICIONAR mais uma condição na cláusula WHERE ou quer ALTERAR a condição já existente?
GOSTEI 0
Dalton_bat

Dalton_bat

28/06/2014

Adicionar mais uma na Where.
Tipo:
UPDATE flan SET numerodocumento = SUBSTRING(numerodocumento FROM 2 FOR CHAR_LENGTH(numerodocumento))
WHERE SUBSTRING(numerodocumento FROM 1 FOR 2) = '00' AND codtdo = '01'

Acrescentei com o and mas, não funcionou.
GOSTEI 0
William

William

28/06/2014

Esse codtdo = '01' é substring ou o campo só possui 2 dígitos mesmo?
GOSTEI 0
Dalton_bat

Dalton_bat

28/06/2014

nesta caso '01' é somente dois dígitos mas, o campo é VARCHAR (20) pois, utilizo abreviações em texto também.
GOSTEI 0
Dalton_bat

Dalton_bat

28/06/2014

Alguém ainda poderia me ajudar aqui?
GOSTEI 0
Dalton_bat

Dalton_bat

28/06/2014

Já resolvi pode encerrar.
GOSTEI 0
POSTAR