首页 > 解决方案 > PostgreSQL - JSONB 在 WHERE

问题描述

我有一个定义为 JSONB 的字段,但实际上它只有文本(不,我不能将类型更改为解决方案)。

这个查询:

SELECT value FROM property WHERE id = 1;

返回这个:

-[ RECORD 1 ]--
value | "IP"

现在,我想通过这个值进行查询,例如 SELECT value FROM property WHERE value = 'IP'。我尝试了几种不同的转换 (value::TEXT = 'IP', value::VARCHAR = 'IP'),但它们都没有返回任何结果。执行此查询的正确方法是什么?

标签: postgresqlcasting

解决方案


SELECT value
FROM property
WHERE value = to_jsonb('IP')

如果您更喜欢转换value为字符串,那么您必须修复您的右侧并通过"IP"而不是IP. 但是,如果右侧实际上不是固定的(即IP可能的值以外的值),那么您将必须正确地对其进行转义,例如A"B实际值将是"A\"B". 因此,我建议我最初的解决方案(它会解决这个问题)。


推荐阅读