use*_*798 3 sql postgresql json
我需要使用 localId 搜索键,我尝试了以下两个查询:
SELECT *
FROM public.translations
where datas->>'localId' = 7;
Run Code Online (Sandbox Code Playgroud)
SELECT *
FROM public.translations
where datas->>'localId'::text = '7';
Run Code Online (Sandbox Code Playgroud)
没有结果。
请问我该怎么做?
当我进行此查询时,我没有值
SELECT datas->>'localId' as local
FROM public.translations
SELECT datas::json->>'localId' as local
FROM public.translations
Run Code Online (Sandbox Code Playgroud)
小智 5
你的屏幕截图有点难以阅读,但看起来你的 JSON 实际上是一个 JSON array,所以你需要从那里选择第一个元素:
where (datas -> 0 ->> 'localId')::int = 7
Run Code Online (Sandbox Code Playgroud)
或者更短一点:
where (datas #>> '{0,localId}')::int = 7
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 contains 运算符@>
来检查是否至少有一个元素带有localId = 7
。但@>
操作员要求jsonb
,而不是json
,所以你需要转换你的列
where datas::jsonb @> '[{"localId": 7}]'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7209 次 |
最近记录: |