sql >> Base de Datos >  >> RDS >> PostgreSQL

Manejo de secuencias Unicode en postgresql

\u0000 es el único punto de código Unicode que no es válido en una cadena. No veo otra forma que desinfectar la cuerda.

Desde json es solo una cadena en un formato específico, puede usar las funciones de cadena estándar, sin preocuparse por la estructura JSON. Un desinfectante de una línea para eliminar el punto de código sería:

SELECT (regexp_replace(the_string::text, '\\u0000', '', 'g'))::json;

Pero también puede insertar cualquier carácter de su agrado, lo que sería útil si el punto de código cero se usa como algún tipo de delimitador.

Tenga en cuenta también la sutil diferencia entre lo que se almacena en la base de datos y cómo se presenta al usuario. Puede almacenar el punto de código en una cadena JSON, pero debe preprocesarlo en algún otro carácter antes de procesar el valor como json tipo de datos.