document_cover
19มิ.ย.
การใช้ where บน jsonb ใน PostgreSQL
JSONPostgresqlDatabase
23 มิ.ย. 68 , 07:56
jsonb นี่มันทรงพลังมาก

สมมุติว่ามีโครงสร้างตารางแบบนี้



กรณีเป็น array ทั่วๆไป

เช่นข้อมูลที่หน้าตาประมาณนี้

ถ้าต้องการค้นหาว่า มี ค่า 1001 อยู่ภายใน my_data มั้ยให้ทำอย่างงี้ครับ



กรณีที่เป็น Object Array

เช่น มีข้อมูลหน้าตาประมาณนี้

วิธีจะค้นหาว่ามีค่า 1001 อยู่มั้ย จะเริ่มซับซ้อนกว่าเดิมแล้วครับ



Operator ที่น่าสนใจ

Operator สำหรับดึงข้อมูลออกมา

Operator
รายละเอียด
ตัวอย่าง
ผล
->
ดึงข้อมูลออกมา ด้วย key
'[{"a":"foo"},{"b":"bar"},{"c":"baz"}]'::json->2
{"c":"baz"}
->>
ดึงข้อมูลออกมา ด้วย key ให้ผลลัพธ์เป็น text
'{"a":1,"b":2}'::json->>'b'
2
#>
ดึงข้อมูลออกมา ด้วย key path
'{"a": {"b":{"c": "foo"}}}'::json#>'{a,b}'
{"c": "foo"}
#>>
ดึงข้อมูลออกมา ด้วย key path ให้ผลลัพธ์เป็น text
'{"a":[1,2,3],"b":[4,5,6]}'::json#>>'{a,2}'
3