【发布时间】:2023-01-03 21:25:07
【问题描述】:
在 Redshift 数据库中,给定一个包含以下 json 的字段:
{"0":true,"1":true,"2":true,"3":true,"4":true,"5":true,"6":true}
虽然我可以使用 json_extract_path_text(my_field, '0') 提取 true,但当我尝试提取元素并将其转换为布尔值时,如下所示:
SELECT
json_extract_path_text(my_field, '0')::boolean
FROM my_table
然后我收到以下错误:
无法将类型文本转换为布尔值
我不明白,因为以下工作没有任何问题:
SELECT 'true'::boolean, 'false'::boolean;
【问题讨论】:
-
SELECT json_extract_path_text(my_field, '0') FROM my_table为该行返回什么?true? -
是的。我不知道如何仔细检查它的类型,但根据错误,它看起来像一个文本
-
你可以转换为文本然后转换为布尔值吗?只是一个想法。我对正在发生的事情的猜测是该值有时未定义并且“缺失”值未映射到布尔值。您可能需要使用 decode() 函数将这些“未定义”值修改为 null。
-
我有一个重现问题的最小示例:
select json_extract_path_text('{"0":true}', '0')::boolean;。如果我之前转换为text,我会得到一个稍微不同的错误:cannot cast type character varying to boolean
标签: amazon-redshift