PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Gestione delle sequenze Unicode in postgresql

\u0000 è l'unico punto di codice Unicode che non è valido in una stringa. Non vedo altro modo che disinfettare il filo.

Da json è solo una stringa in un formato specifico, puoi utilizzare le funzioni di stringa standard, senza preoccuparti della struttura JSON. Un disinfettante a una riga per rimuovere il punto di codice sarebbe:

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

Ma puoi anche inserire qualsiasi carattere di tuo gradimento, il che sarebbe utile se il punto di codice zero fosse usato come una qualche forma di delimitatore.

Nota anche la sottile differenza tra ciò che è memorizzato nel database e come viene presentato all'utente. Puoi memorizzare il punto di codice in una stringa JSON, ma devi pre-elaborarlo su un altro carattere prima di elaborare il valore come json tipo di dati.