[解決済み] PostgreSQLのネストされたJSONクエリ
2023-07-01 23:16:26
質問
PostgreSQL 9.3.4 で、"person" という JSON 型の列があり、そこに格納されているデータは以下のようなフォーマットになっています。
{dogs: [{breed: <>, name: <>}, {breed: <>, name: <>}]}
. 私は、インデックス0にある犬の品種を取得したいのです。以下は、私が実行した2つのクエリです。
動作しない
db=> select person->'dogs'->>0->'breed' from people where id = 77;
ERROR: operator does not exist: text -> unknown
LINE 1: select person->'dogs'->>0->'bree...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
作品紹介
select (person->'dogs'->>0)::json->'breed' from es_config_app_solutiondraft where id = 77;
?column?
-----------
"westie"
(1 row)
なぜ型キャストが必要なのでしょうか? 非効率ではないでしょうか? 私が何か間違ったことをしているのか、それともpostgresのJSONサポートにこれが必要なのでしょうか?
どのように解決するのですか?
これは、演算子
->>
はJSON配列の要素をテキストとして取得するからです。その結果をJSONに戻すにはキャストが必要です。
この冗長なキャストをなくすには、演算子
->
:
select person->'dogs'->0->'breed' from people where id = 77;
関連
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] どのようにjqを使用して2つのファイルから2つのJSONオブジェクトをマージするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQLAlchemy (psycopg2.ProgrammingError) can't adapt type 'dict'.
-
[解決済み] TTLファイルフォーマット - これが何なのかさっぱり分からない
-
[解決済み] Chromeを使用してASP.NET Web APIがXMLの代わりにJSONを返すようにするにはどうすればよいですか?
-
[解決済み] JSONオブジェクトに末尾のカンマを使用することは可能ですか?
-
jsonファイルのインポートエラー、TypeError expected string or buffer
-
[解決済み] どのようにjqを使用して2つのファイルから2つのJSONオブジェクトをマージするには?
-
[解決済み] http.GetからJSONレスポンスを取得する方法
-
[解決済み] JSONの容量に限界はありますか?
-
[解決済み] json.Marshal(struct) は "{}" を返します。
-
[解決済み] Goマップをjsonに変換する