Eu tenho alguns campos em uma tabela que contém dados semelhantes aos seguintes:
{"item1":"stuff","item2":"12345","item3":0,"item4":"this field contains some data that has "quotes" in it that need to be removed","item5":"some other stuff","item6":"","item7":"","item8":"a.b.c.d.e.f"}
Preciso atualizar os dados para remover as aspas da item4
seção, mantendo o restante dos dados intactos.
por exemplo, isso:
"item4":"this field contains some data that has "quotes" in it that need to be removed"
precisa se tornar:
"item4":"this field contains some data that has quotes in it that need to be removed"
Eu posso remover as aspas sem problemas fazendo:
SET @dataval =('{"item1":"stuff","item2":"12345","item3":0,"item4":"this field contains some data that has "quotes" in it that need to be removed","item5":"some other stuff","item6":"","item7":"","item8":"a.b.c.d.e.f"}');
select REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(@dataval,'"item4":"',-1),'","item5"',1),'"','');
Mas é claro que isso perde a redefinição dos dados.
Existe uma maneira de fazer isso em uma consulta ou vou precisar fazer algo como copiar os dados para uma tabela temporária, remover as aspas e fazer um REPLACE
contra os dados originais usando os dados modificados?
Uma opção é atualizar a coluna. Todas as etapas mencionadas podem ser encontradas neste violino e sempre use um ambiente de teste antes de usar as etapas sugeridas na produção.
Suponha que temos a seguinte tabela:
A sugestão abaixo leva em consideração que
"item4":"
(que será o início) e","item5"
(que será o final da parte da string que atualizaremos) existirão.Para selecionar a string entre
"item4":"
e","item5"
usamos:Para remover as aspas duplas da string, use:
Podemos usar a consulta acima para atualizar a tabela:
Agora, a tabela ficaria: