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

Jak wysłać zapytanie do kolumny json dla pustych obiektów?

Nie ma nie ma operatora równości (lub nierówności) dla typu danych json jako całość, ponieważ równość jest trudna do ustanowienia. Rozważ jsonb w Postgresie 9.4 lub nowszym, jeśli jest to możliwe. Więcej szczegółów w tej powiązanej odpowiedzi na dba.SE (ostatni rozdział):

  • Jak usunąć znane elementy z tablicy JSON[] w PostgreSQL?

SELECT DISTINCT json_column ... lub ... GROUP BY json_column niepowodzenie z tego samego powodu (brak operatora równości).

Rzutowanie obu stron wyrażenia na tekst pozwala = lub <> operatorów, ale zwykle nie jest to niezawodne, ponieważ istnieje wiele możliwych reprezentacji tekstowych dla tego samego Wartość JSON. W Postgresie 9.4 lub nowszym przesyłaj do jsonb zamiast. (Lub użyj jsonb na początek.)

Jednak , dla tego konkretnego przypadku (pusty obiekt ) działa dobrze:

select * from test where foo::text <> '{}'::text;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nie można usunąć obiektu z powodu ograniczenia klucza obcego

  2. czy adapter rails postgres obsługuje SSL?

  3. Dostrajanie PostgreSQL:kluczowe elementy zwiększania wydajności

  4. Pierwsze kroki z replikacją strumieniową PostgreSQL

  5. Jak określić kartę w interfejsie postgresa COPY