Как извлечь значения элементов из Json в Redshift

Почему обсуждается в C ++ FAQ (boldfacing mine):

В C ++ ссылки, не относящиеся к const, могут связываться с lvalues и ссылки const могут связываться с lvalues ​​или rvalues, но нет ничего, что могло бы связываться с неконстантным значением r. Это необходимо для защиты людей от изменения значений временных объектов, которые уничтожаются до того, как их новое значение может быть использовано. Например:

void incr(int& a) { ++a; }
int i = 0;
incr(i);    // i becomes 1
incr(0);    // error: 0 is not an lvalue

Если этот incr (0) был разрешен либо временным, что никто никогда не видел, будет увеличиваться или - намного хуже - значение 0 станет 1 . Последнее звучит глупо, но на ранних компиляторах Fortran на самом деле была ошибка, которая выделяла место памяти для хранения значения 0.

0
задан Viv 13 July 2018 в 10:17
поделиться

1 ответ

Элементы внутри [] являются массивом и должны быть доступны с другой функцией. https://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_ARRAY_ELEMENT_TEXT.html

Вы можете вложить функции для получения необходимых данных

SELECT json_extract_path_text( 
         json_extract_array_element_text( 
           json_extract_path_text( 
             '{"history":[{"value":"1500500.0","date":"2017-11-01"},{"value":"1614800.0","date":"2018-06-01"},{"value":"1363700.0","date":"2017-07-01"}]}'
             , 'history') 
           ,1 ) 
         ,'value')  as key2 ;
--   key2
-------------
-- 1614800.0
0
ответ дан Joe Harris 17 August 2018 в 13:11
поделиться
  • 1
    Как получить все значения сразу? В строках – Viv 14 July 2018 в 02:15
Другие вопросы по тегам:

Похожие вопросы: