sql >> Database >  >> RDS >> PostgreSQL

Postgres-operators voor JSON-gegevenstype met behulp van Rails 4

Voor dit antwoord is Postgres 9.4 vereist. In uw voorbeeldgegevensstructuur heeft u het volgende:

2.1.1 :202 > r.column_data
=> {"data1"=>[1, 2, 3], "data2"=>"data2-3", "array"=>[{"hello"=>1}, {"hi"=>2}]}

Helaas werkt het controleren op het bestaan ​​van een element in een array alleen (voor zover ik weet) met stringwaarden. Als we de volgende gegevens hadden, zouden we deze zonder problemen kunnen opvragen.

{"data1"=>['1', '2', '3'], "data2"=>"data2-3"}

Laten we dit eens testen. Opmerking:de lading is jsonb. Het zal niet werken als een json-veld.

Dynamic.create(payload: {"data1"=>['1', '2', '3'], "data2"=>"data2-3"})
Dynamic.where("payload -> 'data1' ? '1'").first
=> #<Dynamic id: 8, payload: {"data1"=>["1", "2", "3"], "data2"=>"data2-3"}, created_at: "2014-12-24 02:30:31", updated_at: "2014-12-24 02:30:31">

Voor meer informatie kun je dit artikel




  1. Hoe maak ik een tijdelijke tabel van een type?

  2. Hoe de Oracle-opgeslagen procedure aan te roepen vanuit azure data factory v2

  3. Kan de kolom die wordt gebruikt in een externe sleutelbeperking niet wijzigen

  4. Hoe het jaar te spellen bij het formatteren van een datum in Oracle