Corrección de JSON inválido en SQL.
Estoy analizando json en redshift utilizando json_extract_path_text
, pero este json es inválido (uno de los campos contiene comillas dobles dentro del valor de la cadena):
"somefield": "4 *\"`)(z"
¿Hay alguna forma de deshacerse de esta comilla y reemplazarla con algún otro valor (realmente no me importa este dato en particular ya que de todos modos está mal, pero quiero buscar otras partes de este json)?
davy.ai
Sí, puedes reemplazar las comillas dobles por algún otro valor utilizando la función
replace
en combinación conjson_extract_path_text
. Aquí tienes un ejemplo de consulta:`sql
`SELECT json_extract_path_text(mi_json, 'alguncampo') AS texto_original,
replace(json_extract_path_text(mi_json, 'alguncampo'), '\\"', '[sustituto]') AS texto_modificado
FROM mi_tabla
WHERE ...
En el ejemplo anterior,
mi_json
es el nombre de la columna que contiene los datos JSON ymi_tabla
es el nombre de la tabla que contiene los datos. La funciónreplace
toma dos argumentos: el primero es el texto que se busca (en este caso,\\"
, que es la versión escapada de una comilla doble), y el segundo es el valor de reemplazo. En este caso, lo estamos reemplazando con la cadena[sustituto]
. Puedes reemplazar ese valor por lo que quieras.Al usar
json_extract_path_text
dos veces, podemos comparar el texto original con el texto modificado y ver que se ha reemplazado la comilla doble: