Ir para conteúdo

POWERED BY:

Arquivado

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

Didi3D

Trocar 2 carateres de 1 campo

Recommended Posts

olá a todos este é meu primeiro post e como de costume obviamente preciso muito de ajuda quem poder me socorrer muito grato ficarei =)

 

minha dúvida e problema são o seguinte:

 

tenho 1 campo hexadecimal na tabela que a cada 20 carateres = uma informação (na verdade é de um jogo essa informação diz lvl, exp e tals)o campo todo deve ter uns 1200 espaços e cada 20 = 1 item

 

cada informação é exatamente assim : 1E80FF16FE058E806176

 

usando esta mini query abaixo:

 

Select * from warehouse

where (charindex (0x16FE058E, warehouse.items) %10=4)

 

eu faço ele listar este serial 16FE058E desse Item que é represenatdo por esses 8 caracteres o serial é gerado automáticamente pelo SQL

 

a grande pergunta é:

a principal informação deste campo são os 2 primeiros caracteres 1E80FF16FE058E806176 esses 2 em destaque já dizem oq é o item (um espada por exemplo)

 

eu gostaria de obter uma função ou qualquer coisa que faça apenas que eu consiga trocar esses 2 carateres por outros 2 de minha escolha por exemplo trocar o 1E por 1F

 

assim eu poderia fazer uma atualização em todo BD de uma vez só pq se fosse 1 a 1 iria demorar séculos =]

 

enfim quem poder me dar uma luz agradeço desde já caso não esteja bem explicado pra poder me ajudar diga oq precisa saber q informo tudim

 

abraços a todos do Fórum

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça um update com o comando replace no campo em questão ae e o seu devido where

 

ficaria +ou- assim:

update warehouse set warehouse.items = replace(warehouse.items, '1E', 'XZ')where (charindex (0x16FE058E, warehouse.items) %10=4)
OBS.: faça um bom backup antes de fazer isso pra valer

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça um update com o comando replace no campo em questão ae e o seu devido where

 

ficaria +ou- assim:

update warehouse set warehouse.items = replace(warehouse.items, '1E', 'XZ')where (charindex (0x16FE058E, warehouse.items) %10=4)
OBS.: faça um bom backup antes de fazer isso pra valer
hmm mas nesse caso eriva me corrija se meu pensamento estiver errado tb ainda não testei essa possibilidade, mas devido o where ser = (charindex (0x16FE058E, warehouse.items) %10=4) entendo que ele só vai mudar o q for = a esse serial correto ?

 

no caso ele teria que modificar todos independente do serial apenas postei ele como exemplo de como faço buscas pelo serial dele pq se fosse por ID q no caso seria 1E esses 2 digitos são os 2 primeiros e num teste q fiz só consegui listar eles através deste ID usando %10=1 em vez de %10=4

 

tem algum comando faça assim ele dividir cada bloco com 20 caracteres (q seria = ao item) e pegar desses bloco de 20 os 2 primeiros e trocar por outros essa q é a maior dúvida pq de 20 em 20 o campo todo deve ter uns 1200 senaum me engano

 

mas vou testar quando xegar em casa no BD reserva afinal testar no original é loucura ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

eriva tentei seu código e olha o erro q deu:Server: Msg 260, Level 16, State 1, Line 1Disallowed implicit conversion from data type varchar to data type varbinary, table 'MuOnline.dbo.warehouse', column 'Items'. Use the CONVERT function to run this query.ou seja como ele é varbinary campo deve ser convertido antes mas como faço essa conversão ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eriva tentei seu código e olha o erro q deu:Server: Msg 260, Level 16, State 1, Line 1Disallowed implicit conversion from data type varchar to data type varbinary, table 'MuOnline.dbo.warehouse', column 'Items'. Use the CONVERT function to run this query.ou seja como ele é varbinary campo deve ser convertido antes mas como faço essa conversão ?

para conversão tem os comandos CONVERT e CAST
select convert(varchar(100),campo), cast(campo as varchar(100))

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.