sql >> Database >  >> RDS >> PostgreSQL

Omgaan met Unicode-reeksen in postgresql

\u0000 is het enige Unicode-codepunt dat niet geldig is in een tekenreeks. Ik zie geen andere manier dan het touwtje te ontsmetten.

Sinds json is slechts een tekenreeks in een specifiek formaat, u kunt de standaard tekenreeksfuncties gebruiken, zonder u zorgen te maken over de JSON-structuur. Een eenregelig ontsmettingsmiddel om het codepunt te verwijderen zou zijn:

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

Maar u kunt ook elk willekeurig teken invoegen, wat handig zou zijn als het nulpunt wordt gebruikt als een vorm van scheidingsteken.

Let ook op het subtiele verschil tussen wat er in de database wordt opgeslagen en hoe het aan de gebruiker wordt gepresenteerd. U kunt het codepunt opslaan in een JSON-tekenreeks, maar u moet het vooraf verwerken tot een ander teken voordat u de waarde verwerkt als een json gegevenstype.



  1. jsonb LIKE-query op geneste objecten in een array

  2. Hoe de grenzen van groepen aaneengesloten opeenvolgende getallen te vinden?

  3. Bestand invoegen in mysql Blob

  4. c3p0 zegt - java.lang.Exception:ALLEEN DEBUG:Achterstallige resource check-out stacktracering bij het starten van een slaapstandtransactie