PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Manipulando sequências Unicode no postgresql


\u0000 é o único ponto de código Unicode que não é válido em uma string. Não vejo outra maneira senão higienizar a corda.

Desde json é apenas uma string em um formato específico, você pode usar as funções de string padrão, sem se preocupar com a estrutura JSON. Um desinfetante de uma linha para remover o ponto de código seria:
SELECT (regexp_replace(the_string::text, '\\u0000', '', 'g'))::json;

Mas você também pode inserir qualquer caractere de sua preferência, o que seria útil se o ponto de código zero fosse usado como alguma forma de delimitador.

Observe também a sutil diferença entre o que está armazenado no banco de dados e como ele é apresentado ao usuário. Você pode armazenar o ponto de código em uma string JSON, mas precisa pré-processá-lo para algum outro caractere antes de processar o valor como um json tipo de dados.