Como copiar parte de um campo em outro campo e apaga-lo em seguida ?
-
segunda-feira, 27 de fevereiro de 2012 12:18
bom dia pessoal,
eu possuo uma tabela em que tenho um campo chamado con_obs e outro que se chama
con_CPF, no con_obs foram incluidos alguns registros de CPF (em alguns casos está apenas o CPF e em outros ja existia informação e o CPF foi separado com uma /CPF:)
Ex. ( con_obs quando estava vazia)
'CPF: XXX.XXX.XXX-XX'
(con_obs quando ja havia sido gravado outra informação antes do CPF)
'alguma informação/CPF:XXX.XXX.XXX-XX'
eu preciso copiar todos os CPF's para o campo con_CPF e apaga-los do campo con_obs
alguem pode me ajudar ??
Todas as Respostas
-
segunda-feira, 27 de fevereiro de 2012 13:31
Camillo, bom dia,
Eu sugiro que antes de realizar este update, vc tenha em mãos um função que valide se o dado que está na coluna con_obs realmente é um CPF valido. É importante fazer esta validação pois, pode haver em sua tabelas dados referente a observações da linha e que não poderá ser apagado.
Eu tenho essa função que valida o CPF, se precisa eu coloco aqui pra vc.
E o mais importante: faça backup da tabela antes de iniciar o processo. Só pra garantir.
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
-
segunda-feira, 27 de fevereiro de 2012 13:31
O update ficaria assim :
BEGIN TRAN update TableName set con_cpf = con_obs where dbo.fn_cpf(con_obs) = 1 /* Onde fn_cpf é uma função para validação de cpf´s que retorna 1 quando o módulo 11 do cpf for verdadeiro*/ GO update TableName set con_obs = null where con_cpf = con_obs COMMIT
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
- Marcado como Resposta CamilloSttrobio segunda-feira, 27 de fevereiro de 2012 17:06
-
segunda-feira, 27 de fevereiro de 2012 13:33
Segue um exemplo...MAS para este exemplo funcionar o campo de observação deve seguir as regras:
- O CPF sempre será a última informação do campo, exemplo: Qualquer coisa / CPF: xxxxx
- O CPF sempre vem depois da String "CPF:"create table #teste
(
obs varchar(max),
cpf varchar(max)
)
go
insert into #teste values ('CPF:357.658.625-01', null)
insert into #teste values ('qualquer coisa/CPF:357.658.625-01', null)
update #teste
set cpf = substring (obs, PATINDEX('%CPF:%',obs) + 4, len(obs))
where obs like '%CPF:%'
select * from #teste
Abraços, Weslley Moura MCP - MCTS - ORA SqlExpert
- Marcado como Resposta CamilloSttrobio segunda-feira, 27 de fevereiro de 2012 17:06
-
segunda-feira, 27 de fevereiro de 2012 16:53
Obg pessoal consegui fazer e entender tbm ^^
eu sou novato com SQL não sei muita coisa ..
é só mais uma coisa no caso para transferir esta OK agora como eu faço para apagar o que foi transferido ?
EX:con_obs = qualquer coisa/CPF:XXX.XXX.XXX-XX
tranfere do CPF pra frente para a coluna con_CPF ficando assim
con_obs = qualquer coisa/CPF:XXX.XXX.XXX-XX
con_cpf = CPF:XXX.XXX.XXX-XXcomo faço para excluir na coluna con_obs da barra pra frente ???
Vlw galera
abçs -
segunda-feira, 27 de fevereiro de 2012 17:06
glr eu consegui \o/
eu fiz assim
update teste1 set obs = substring (obs,0, CharIndex ('/CPF:', obs, 1))where obs like '%/CPF:%'
OBG de novo a td mundo que respondeu =D
-------------------------------------------------------------------------------------------------------------------------------------
para quem estiver com o mesmo problema que eu estava a solução que eu encontrei foi ...
--COPIAR PARA CAMPO CPF
update teste1
set CPFCNPJ = substring (obs, PATINDEX('%CPF:%',obs) , len(obs))
where obs like '%CPF:%'
update teste1
set CPFCNPJ = substring (obs, PATINDEX('%CNPJ:%',obs) , len(obs))
where obs like '%CNPJ:%'
--APAGA CAMPO OBS
update teste1
set obs = case
when CharIndex ('/CPF:', obs, 1)<> 0 then
substring (obs,0, CharIndex ('/CPF:', obs, 1))
when CharIndex ('/CNPJ:', obs, 1)<> 0 then
substring (obs,0, CharIndex ('/CNPJ:', obs, 1))
when CharIndex ('/CPF:', obs, 1)= 0 AND CharIndex ('/CNPJ:', obs, 1)= 0 then
NULL
end;
- Marcado como Resposta CamilloSttrobio segunda-feira, 27 de fevereiro de 2012 17:06
- Editado CamilloSttrobio segunda-feira, 27 de fevereiro de 2012 19:31 melhorar resposta

