我有一个JSONB专栏,内容如下:
{“ibd”:true,“参与者id”:“P016”,“示例参与者id”:“B1”}
如果我查询不带双引号的值,将得到一个错误:
错误:json类型的输入语法无效第1行:…ERE
sample_metadata.metadata->“sample_participant_id”=“B1”
致:
WHERE sample_metadata.metadata->'sample_participant_id' = 'B1'
但是为了
WHERE sample_metadata.metadata->'sample_participant_id' = '"B1"'
它按预期工作。我不明白为什么我需要双引号。它们是实际价值吗?
谢谢,
伊甸园
最佳答案
->
运算符返回jsonb
,因此不能将json与字符串文本(jsonb
)或'B1'
类型进行比较。
WHERE sample_metadata.metadata->'sample_participant_id' = '"B1"'
工作的原因是元素
text
可以隐式转换为"B1"
进行比较您应该使用
jsonb
运算符进行比较。它返回->>
WHERE metadata->>'sample_participant_id' = 'B1'
Demo
关于postgresql - JSONB字段和字符串键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54169925/