Truy vấn của bạn đã kết thúc. json_each()
là chức năng chính. Hoặc jsonb_each()
cho jsonb
. Một số cải tiến:
SELECT *
FROM things t
WHERE EXISTS (
SELECT FROM json_each(t.blueprint) b
WHERE b.value->>'name' ILIKE 'azamund'
);
sqlfiddle
cũ
db <> fiddle tại đây
-
json_each()
đã trả về giá trị làjson
loại dữ liệu. Không cần diễn viên bổ sung. -
Tốt hơn, hãy sử dụng
LATERAL
tham chiếu trongEXISTS
. Điều này gọn gàng hơn nhiều so với việc bỏ ghi chú bằng hàm set-return trongSELECT
danh sách. Có liên quan: -
Sử dụng
ILIKE
(~~*
) cho phù hợp với mẫu. Đối sánh cụm từ thông dụng (~
,~*
) mạnh hơn, nhưng cũng đắt hơn. Vì vậy, hãy sử dụngLIKE
cơ bản /ILKE
nơi bạn có thể. Chi tiết:
Thay thế với mảng JSON
Bạn đã thấy câu trả lời liên quan của tôi cho mảng JSON:
Mặc dù truy vấn cho các đối tượng JSON lồng nhau có vẻ đơn giản nhưng có hỗ trợ chỉ mục vượt trội cho mảng:
Có thể trở nên đơn giản / hiệu quả hơn với SQL / JSON trong Postgres 12 ...