我嘗試在此選擇的每個結果行中獲取 JSON 列的一部分
SELECT TRIM(a.symbol),
TRIM(a.ex_name),
to_char(a.date_rw, 'dd-MON-yyyy'),
a.pwr,
a.last,
JSON_QUERY(b.mval, '$."-9"') as value
FROM adviser_log a
INNER JOIN profit_model_d b
ON a.date_rw = b.date_rw
WHERE a.date_rw = '08-OCT-2021'
選擇結果:
VERY NAS 08-OCT-2021 -9 8.9443 {"sl":-3.6,"tp":5,"avg":1.368,"max":5,"min":-3.6,"count":1}
作為一個 json 路徑,我把“-9”字面量放在了路徑 a.pwr 是否有可能我試過把 CONCAT('$.', a.pwr) 放在沒有結果的情況下是否有任何方法可以將動態 json 路徑創建到 JSON_QUERy 中
我想將與 a.pwr 相比的部分 json 與 select 中的每一行進行匹配
謝謝
uj5u.com熱心網友回復:
您可以使用函式來動態獲取 JSON 值:
WITH FUNCTION get_value(
value IN CLOB,
path IN VARCHAR2
) RETURN VARCHAR2
IS
BEGIN
RETURN JSON_OBJECT_T( value ).get_object( path ).to_string();
END;
SELECT TRIM(a.symbol) AS symbol,
TRIM(a.ex_name) AS ex_name,
to_char(a.date_rw, 'dd-MON-yyyy') AS date_rw,
a.pwr,
a.last,
get_value(b.mval, a.pwr) AS value
FROM adviser_log a
INNER JOIN profit_model_d b
ON a.date_rw = b.date_rw
WHERE a.date_rw = DATE '2021-10-08'
其中,對于您的示例資料:
CREATE TABLE adviser_log (symbol, ex_name, date_rw, pwr, last) AS
SELECT 'VERY', 'NAS', DATE '2021-10-08', -9, 8.9443 FROM DUAL;
CREATE TABLE profit_model_d (date_rw DATE, mval CLOB CHECK (mval IS JSON));
INSERT INTO profit_model_d (
date_rw,
mval
) VALUES (
DATE '2021-10-08',
'{"-9":{"sl":-3.6,"tp":5,"avg":1.368,"max":5,"min":-3.6,"count":1}}'
);
輸出:
象征 EX_NAME DATE_RW 壓水堆 最后的 價值 非常 NAS 2021 年 10 月 8 日 -9 8.9443 {"sl":-3.6,"tp":5,"avg":1.368,"max":5,"min":-3.6,"count":1}
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314331.html
上一篇:在自治資料庫(共享基礎架構)上進行跨區域自治DataGuard故障轉移后,以下資料庫屬性會發生什么變化?
下一篇:如何動態構造表名
