sql >> Databáze >  >> RDS >> PostgreSQL

Jak dotazovat sloupec json na prázdné objekty?

Neexistuje žádný operátor rovnosti (nebo nerovnosti) pro datový typ json jako celek, protože rovnost se těžko nastoluje. Zvažte jsonb v Postgres 9.4 nebo novější, kde je to možné. Více podrobností v této související odpovědi na dba.SE (poslední kapitola):

  • Jak odstranit známé prvky z pole JSON[] v PostgreSQL?

SELECT DISTINCT json_column ... nebo ... GROUP BY json_column selhat ze stejného důvodu (žádný operátor rovnosti).

Přetypování obou stran výrazu do text umožňuje = nebo <> operátory, ale to obvykle není spolehlivé, protože existuje mnoho možných textových reprezentací pro stejné hodnota JSON. V Postgresu 9.4 nebo novějším převádějte do jsonb namísto. (Nebo použijte jsonb pro začátek.)

Nicméně , pro tento konkrétní případ (prázdný objekt ) funguje to dobře:

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


  1. Jak nakonfigurovat AppArmor pro PostgreSQL a TimescaleDB

  2. Rozdíl mezi INSTR() vs LOCATE() v MariaDB

  3. Jak zobrazit funkci, proceduru, spouští zdrojový kód v postgresql?

  4. Jak funguje funkce LOCATE() v MySQL