sql >> Databasteknik >  >> RDS >> PostgreSQL

Hantera Unicode-sekvenser i postgresql

\u0000 är den enda Unicode-kodpunkten som inte är giltig i en sträng. Jag ser inget annat sätt än att sanera snöret.

Sedan json är bara en sträng i ett specifikt format, kan du använda standardsträngsfunktionerna utan att behöva oroa dig för JSON-strukturen. En enradsdesinfektion för att ta bort kodpunkten skulle vara:

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

Men du kan också infoga vilket tecken du vill, vilket skulle vara användbart om nollkodpunkten används som någon form av avgränsare.

Notera också den subtila skillnaden mellan vad som lagras i databasen och hur det presenteras för användaren. Du kan lagra kodpunkten i en JSON-sträng, men du måste förbehandla den till något annat tecken innan du bearbetar värdet som en json datatyp.



  1. Unserialize genom fråga på databasnivå själv

  2. UPPDATERA och ERSÄTT del av en sträng

  3. Varför använda join istället för var i MySQL-frågor?

  4. 7 alternativ för att aktivera rör (||) som sammanfogningsoperatör i MariaDB