У меня есть столбец типа клуба, в котором есть данные Json. У меня есть около 100 ключей, которые уникальны для каждой записи. мы используем json_value('json_data', 'keyname'). В моем случае я не знаю фактического для этой записи. Поэтому мне нужно присоединиться к другой таблице, где определены ключи. Вместо имени ключа я хочу передать имя столбца. Это дает некоторую ошибку, говорящую:
Синтаксическая ошибка,
Ожидается: строка
Итак, кто-нибудь может предложить, как получить данные из столбца json, передав динамический ключ во время выполнения.
Допустим, у меня есть две таблицы table_1 и table_2. Table_1 имеет столбец с именем json_data_column, в котором хранятся данные в формате json. Table_1 имеет FK для TABLE_2, у которого есть ключ сопоставления. поэтому мы должны выяснить, каково значение этого динамического ключа каждой записи.
Если я даю любую статическую строку вместо t2.json_key , то она работает. Но при задании динамических значений это не работает.
РАБОТАЮЩИЙ
select
json_value ( json_value (t1.json_data_column, '$.string'), '$.my_key' )
from TABLE_1 t1
inner join TABLE_2 t2 on t1.json_key_fk = t2.id
НЕ РАБОТАЕТ
select
json_value ( json_value (t1.json_data_column, '$.string'), t2.json_key )
from TABLE_1 t1
inner join TABLE_2 t2 on t1.json_key_fk = t2.id
Набор данных:
{"string":"{\"id\":133100,\"data_found\":5,\"isActive\":\"true\",\"process\":\"completed\",\"status\":\"COMPLETED\"}"}
{"string":"{\"id\":133100,\"data_found\":5,\"isDelete\":\"true\",\"process\":\"completed\",\"status\":\"COMPLETED\"}"}
{"string":"{\"id\":133100,\"data_found\":5,\"isUnderProgress\":\"false\",\"process\":\"completed\",\"status\":\"COMPLETED\"}"}
{"string":"{\"id\":133100,\"data_found\":5,\"isSentToClient\":\"false\",\"process\":\"completed\",\"status\":\"COMPLETED\"}"}