JSON_EXTRACT无法在BigQuery中使用布尔值

baubqpgj  于 2023-02-26  发布在  其他
关注(0)|答案(2)|浏览(189)

我有一个来自Firebase的JSON,如下所示:

{
    'name' : 'starbyone',
    'foo': {'id': 123},
    'somebit': True,
    'bar': {'_a': 123, '_b': 456}
    }

我正在使用BigQuery并尝试使用JSON_EXTRACT函数提取'foo':

SELECT 
    JSON_EXTRACT(json, "$.name") as Works,
    JSON_EXTRACT(json, "$.foo") as AlsoWorks,
    JSON_EXTRACT(json, "$.bar") as DoesNotWork
FROM schema.table

但是,问题是第三列(别名为DoesNotWork)只返回NULL,而'Foo'将返回字符串"{'id ':123} "
我还尝试了JSON_VALUE,但没有效果。
我哪里做错了?
这个简单的片段似乎对我也不起作用:

SELECT JSON_EXTRACT("{'category': 1, 'comments': [], 'free': False,'price': 55","$.price") AS Result
ws51t4hk

ws51t4hk1#

使用truefalse代替TrueFalse

eyh26e7m

eyh26e7m2#

使用REPLACE、CAST和EXTRACT将其转换为小写的true/false,提取值,然后强制转换为布尔值。

CAST(JSON_EXTRACT_SCALAR(JSON_EXTRACT(REPLACE(REPLACE(yourColumn, ': True', ': true'), ': False', ': false'), "$.field2")) as bool) as yourAlias,

假设yourColumn的形式如下所示,并且您需要field2的布尔值。

{'field1': True, 'field2': False}

相关问题