Como Deletar um caractere de um camo
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
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
Curtidas 0
Melhor post
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
28/06/2014
Respondendo sua dúvida, essa instrução SQL deve ajudar:
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.
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
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
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
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
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.
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
28/06/2014
Esse codtdo = '01' é substring ou o campo só possui 2 dígitos mesmo?
GOSTEI 0
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
28/06/2014
Alguém ainda poderia me ajudar aqui?
GOSTEI 0
Dalton_bat
28/06/2014
Já resolvi pode encerrar.
GOSTEI 0