Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Acma

[Resolvido] Alterar vários campos

Recommended Posts

Pessoal, boa tarde!

 

Sou novo na administração de BD. Estou precisando rodar um UPDATE na minha tabela de PRODUTOS.

A situação atual é o seguinte, tem alguns campos do campo COD_BARRA, que tem 5 caracteres, Ex: 23998.

Preciso que esses campos que estão com 5, contenha somente 4 caracteres Ex: 3998, ou seja, preciso rodar algum script que remova somente o primeiro caracter do campo. Estou a horas procurando alguma solução na Web, mais nada encontrei. Se algum souber e algo e puder compartilhar, eu agradeceria muito!!

 

Att,

 

Rodrigo Zaiden

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo,

 

olha um exemplo

 

 

declare @dados table (valores varchar(50))

insert into @dados values ('12345')
insert into @dados values ('abcde')
insert into @dados values ('09876')
insert into @dados values ('aabbcc')

select substring(valores,2,4) from @dados

 

CUIDADO com UPDATES!

faça com transação aberta BEGIN TRANS e em uma base de teste primeiro!

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá A.Jr,

 

Eu vi seu exemplo, mais fiquei meio perdido, pq o select no caso, so vai me retornar valores não é? Desculpe a ignorância rs. Pelo que entendi, o comando substring corta uma parte da string no seu exemplo, se eu entendi corretamente ele começa pelo 2º caracter e corta 4 caracters da sequência. Em relação ao banco, já fiz um backup dele!.

 

Grato desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, no caso fiz um select demonstrando o uso do comando SUBSTRING, que como você mesmo percebeu "cortou" um caracter.

Ele começou a contar do segundo caracter (valor 2) e dali em diante contou quatro caracteres (valor 4)

 

No caso de update ficaria assim:

 

UPDATE TABELA SET CAMPO = SUBSTRING(CAMPO,2,4)

 

note que nao coloquei where pois você falou que é na tabela toda!!!!

Se voce tiver um campo com tres caracteres por exemplo ele vai ficar com dois:

 

exemplo:



declare @dados table (valores varchar(50)) 

insert into @dados values ('12345') 
insert into @dados values ('abcde') 
insert into @dados values ('09876') 
insert into @dados values ('aabbcc') 
insert into @dados values ('111') 

select substring(valores,2,4) from @dados

 

Somente coloquei um dado a mais. Observe com atenção a última linha!

 

Tem certeza que todos os campos contem 5 caracteres? Se SIM, rode o update se NÃO, vamos ter que fazer um WHERE para mudar somente os que tem 5 caracteres

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A.Jr, Muito Obrigado!! Me solucionou o problema, e como não erão todos os campos, eu coloquei um WHERE, segue o script como ficou:

UPDATE PRODUTOS SET COD_BARRA = SUBSTRING(COD_BARRA,2,4)WHERE LEN(COD_BARRA)=5 AND COD_GRUPO=2

 

Obrigado mesmo!!

PS: Aprendi mais uma hoje :)

 

Att,

Rodrigo Zaiden

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda alguns cuidados a serem tomados :

 

Verificar se este campo é chave (FK) em alguma outra tabela e qual a constraint (se existe) que tem (cascade/set null/delete).

Verificar se é isto mesmo que ser quer, fazer algum tipo de salva antes de rodar.

 

Isto em sistemas em produção é MUITO perigoso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A.Jr, Muito Obrigado!! Me solucionou o problema, e como não erão todos os campos, eu coloquei um WHERE, segue o script como ficou:

UPDATE PRODUTOS SET COD_BARRA = SUBSTRING(COD_BARRA,2,4)WHERE LEN(COD_BARRA)=5 AND COD_GRUPO=2

 

Obrigado mesmo!!

PS: Aprendi mais uma hoje :)

 

Att,

Rodrigo Zaiden

Vivendo e aprendendo :joia:

 

 

Ainda alguns cuidados a serem tomados :

 

Verificar se este campo é chave (FK) em alguma outra tabela e qual a constraint (se existe) que tem (cascade/set null/delete).

Verificar se é isto mesmo que ser quer, fazer algum tipo de salva antes de rodar.

 

Isto em sistemas em produção é MUITO perigoso.

 

Fazer em produção direto realmente requer muitas checagens! Bem lembrado Motta!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta, concordo plenamente contigo, todo cuidado é pouco, mais no meu caso estou fazendo uma conversão de base de dados, migração de sistemas :).

Mas obrigado pela observação!!

 

Att,

 

Rodrigo Zaiden

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.