#google-bigquery
#google-bigquery
Вопрос:
Я использую JSON_EXTRACT()
для извлечения даты из json.
Я хочу получить дату без двойных кавычек.
Вот пример того, что я делаю :
JSON_EXTRACT(JSON_EXTRACT(events, "$.my_member"), "$.my_Number") as xyz
my_number
содержит строку даты как «2016-01-01 11:31:25», я хочу это без двойных кавычек.
Я попытался использовать временную метку как :
timestamp(JSON_EXTRACT(JSON_EXTRACT(events, "$.my_member"), "$.my_Number"))
но он возвращает нулевое значение в xyz.
Спасибо.
Ответ №1:
Попробуйте
JSON_EXTRACT_SCALAR(JSON_EXTRACT(events, "$.my_member"), "$.my_Number")
Кроме того, вы должны иметь возможность дополнительно «оптимизировать» свое выражение, создав правильный путь JSON и используя только функции JSON. См. «Подсказку» ниже
SELECT
JSON_EXTRACT_SCALAR(
'{"my_member":{"my_Number":"2016-01-01 11:31:25"}}',
"$.my_member.my_Number"
)
Смотрите более подробную информацию, а также разницу между JSON_EXTRACT_SCALAR и JSON_EXTRACT в функциях JSON
Комментарии:
1. Это правильный ответ. Скалярная версия предназначена для извлечения скалярных значений, таких как строки.
2. Я использовал JSON_EXTRACT_SCALAR в MySQL Workbench и получил код ошибки: 1305. ФУНКЦИЯ manifest.JSON_EXTRACT_SCALAR не существует. Возможно, я делаю что-то не так (пожалуйста, LMK, если у меня есть). Я нашел альтернативное решение, которое я опубликовал ниже.
3. это был вопрос с тегом BigQuery! :o)
Ответ №2:
Выполнить REPLACE
REPLACE(JSON_EXTRACT(JSON_EXTRACT(events, "$.my_member"), "$.my_Number"),""","") as xyz
Ответ №3:
Я попробовал JSON_EXTRACT_SCALAR в MySQL Workbench, но получил код ошибки: 1305. ФУНКЦИЯ manifest.JSON_EXTRACT_SCALAR не существует
Вместо этого я использовал JSON_UNQUOTE, и это сделало свое дело.
У меня есть столбец с именем buffer_time, который содержит:
'{"after": {"time": "00:01:00", "is_enabled": true}, "before": {"time": "00:04:00", "is_enabled": true}}'
JSON_UNQUOTE(JSON_EXTRACT(buffer_time, ‘$.after.time’))
дал мне: `
00:01:00
Надеюсь, это поможет.