PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Obsługa sekwencji Unicode w postgresql

\u0000 jest jednym punktem kodu Unicode, który nie jest prawidłowy w ciągu. Nie widzę innego sposobu niż zdezynfekowanie łańcucha.

Od json jest tylko ciągiem w określonym formacie, możesz użyć standardowych funkcji ciągów, nie martwiąc się o strukturę JSON. Jednowierszowy środek dezynfekujący do usunięcia punktu kodowego to:

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

Ale możesz także wstawić dowolny znak, który Ci się podoba, co byłoby przydatne, jeśli punkt zerowy jest używany jako pewna forma ogranicznika.

Zwróć także uwagę na subtelną różnicę między tym, co jest przechowywane w bazie danych, a tym, jak jest to prezentowane użytkownikowi. Możesz przechowywać punkt kodu w ciągu JSON, ale musisz go wstępnie przetworzyć na inny znak przed przetworzeniem wartości jako json typ danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klauzula ORDER BY ... USING w PostgreSQL

  2. SQLAlchemy create_all() nie tworzy tabel

  3. Wywołanie procedury składowanej w ramach procedury składowanej

  4. Jak stworzyć sekwencję używając wartości początkowej z zapytania?

  5. Migracja Rails + Postgres - dlaczego otrzymuję błąd PG::UndefinedFunction:ERROR:function gen_random_uuid() nie istnieje?