私は2つの列id(整数)とparam_specs(テキスト)を持つテーブルパラメータを持っています。postgresのjson配列から特定の要素を抽出するには?
実際param_specs列はPIC上記のように見えます(それは以下を確認して簡略化するために: - )
param_specs
[
{"paramName":"param1",
"type":"string",
"defaultValue":"tomcat7",
"optional":false,
"deploymentParam":false},
{"paramName":"param123PreStopAction",
"type":"path",
"defaultValue":"HELLO",
"optional":false,
"deploymentParam":false}
]
だから、JSON配列の配列であると私はparamName
param123PreStopAction
すなわち、HELLOのdefaultValue
フィールドを取得したいです。これは、パラメータと呼ばれる私のテーブルは、私はパラメータテーブルのparamNameにはdefaultValue各行のを取得したい2つの列を持つように見えるものである画像で見ることができるように
**** **** EDIT LIKE(%のPostStopAction)または(%PreStopAction)は、画像内の太字の値を確認します(つまり、paramNameには、例えば「mytomcat7 PostStopActionに」実際のparamName値内PreStopActionまたはPostStopActionのいずれかを持っており、そのはdefaultValueを取得する必要があり、すなわち「後停止 ')
画像に行3のようなpreStopまたはPostStopのparamNameを持つjsonが存在しないテーブルには、いくつかの行があります。
誰かがこの質問に手助けできますか?次のようにJGHが何かを示唆したように
: -
SELECT "はdefaultValue" パラメータFROM CROSS横 json_to_recordset(a.param_spec :: JSON)に参加X AS( "paramNameに" テキストを、 "はdefaultValue" 「paramNameには」「%のPreStopAction」OR 『%のPostStopAction『
こんにちはJGH(json_to_recordsetから上記溶液が働くもののおかげでチームメイトではなく、内側のクエリでJSON配列を渡すので、私は、select「はdefaultValue」のような何かをしたいです' パラメータからparam_specs :: jsonを選択します)x( "paramName" text、 "defaultValue" text) "paramName" =' param123PreStopAction ';あなたは何かを提案できますか? – 100MIL
CROSSは、xとLATERAL json_to_recordset(a.param_specs :: JSON)に参加横の使用再びJGH – JGH
おかげに参加します編集を参照してくださいが、クエリは、パラメータFROM 「はdefaultValue」を選択しようとする上で(「paramNameに」テキスト、 "defaultValue" text) WHERE "paramName" = 'param123PreStopAction';メッセージ(型jsonの入力構文が無効です)を与えることで失敗します。テーブル名がparameter.Anyのアイデアであることに注意してください。なぜこの問題に直面していますか? – 100MIL