postgresql 使用select在包含特殊字符的字符串中查找数据

kpbwa7wx  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(244)

我正在尝试筛选出其中一个特定字段包含特殊字符的记录。
例如:

-[ RECORD 1 ]--------------+------------------------------ 
id                         | 3151 
description                | Manual add from SCCM 
mac_address                | d4258be8d064 
status                     | Unknown 
mac_vendor                 | Intel Corporate 
added_by                   | Policy Manager 
added_at                   | 2019-02-19 14:29:21.802413+00 
updated_at                 | 2022-10-19 10:57:15.960282+00
attributes                 | {"Our Device": "true"}
extras                     |  
org_id                     | 1 
permit_id                  | 1
agentless_managed_endpoint | 0

我试过了

select * 
from tips_endpoints 
where description = 'Manual add from SCCM' 
AND attributes = '{"Our Device": "true"}';

但它失败了。
我需要能够找到属性值为{“我们的设备”:“真”}

euoag5mw

euoag5mw1#

由于该列是jsonb列,因此更好的方法是使用JSON functions列之一

and attributes ->> 'Our Device' = 'true'

and attributes @> {"Our Device": "true"}

如有必要,可以对这两个表达式进行索引。

p8h8hvxi

p8h8hvxi2#

试试看:

select * 
from tips_endpoints 
where description = 'Manual add from SCCM' 
  AND attributes Like '%{"Our Device": "true"}%';

UPD,适用于Postgres:

select * 
from tips_endpoints 
where description = 'Manual add from SCCM' 
  AND attributes::text Like '%{"Our Device": "true"}%';

相关问题