我有一個列,metadata在我的表(比如trips)上呼叫,它是 JSONB 型別的。我想對metadata.
例如,該metadata列的整體之一是以下形式:
{"city": "London", "trip_id": 2075209, "store_id": 108, "driver_id": 1166061, "driver_name": "Jon Doe", "track_back_order": false}
我想獲取所有城市為倫敦的記錄。我試圖將元資料列轉換為我的WHERE子句中的文本
WHERE trips.metadata::TEXT ILIKE 'London'
回傳 0 個結果。
但是在欄位級別搜索是有效的,例如這個WHERE子句會回傳適當的結果:
WHERE trips.metadata->>'city' ILIKE 'London'
但是由于元資料列的鍵可以是任意的,所以我不能對每個欄位進行上述查詢。關于如何解決這個問題的任何想法?
uj5u.com熱心網友回復:
ILIKE或LIKE沒有任何通配符與=.
所以 - 忽略大小寫敏感 - trips.metadata::TEXT ILIKE 'London'本質上與trips.metadata::TEXT = 'London'
顯然那是行不通的。
如果要遍歷所有鍵,可以使用 JSON 路徑運算式:
where metadata @@ '$.* like_regex "London" flag "i"'
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/463051.html
標籤:PostgreSQL
