我有一列包含幾個不同的值。這不是JSON 格式。它是一個分成不同部分的字串。我只需要獲取在 ID 下找到的所有內容。
在下面的例子中,我只想抓住這個詞:“syntax”和“village”

select value.id
from TBL_A
以上不起作用,因為這不是 json。
有誰知道如何獲取在該字串列的“id”部分下找到的完整單詞?
uj5u.com熱心網友回復:
即使它是一個字串,由于它是格式正確的 JSON,您可以將字串轉換為 JSON 變體,如下所示:
select parse_json(VALUE);
然后,您可以使用標準的冒號和點符號訪問其屬性:
select parse_json(VALUE):id::string
uj5u.com熱心網友回復:
我會選擇 Greg 將其視為 JSON 的選項,因為它確實看起來像 JSON,但是如果您知道在某些情況下它絕對不是 JSON,那么您可以使用SPLIT_TO_TABLE和TRIM,如果您知道,它不在任何字串
SELECT t.value,
TRIM(t.value,'{}') as trim_value,
s.value as s_value,
split_part(s_value, ':', 1) as token,
split_part(s_value, ':', 2) as val,
FROM table t
,LATERAL SPLIT_TO_TABLE(trim_value, ',') s
可以壓縮,用QUALIFY過濾以獲得您想要的行:
SELECT
SPLIT_PART(s.value, ':', 2) AS val,
FROM table t
,LATERAL SPLIT_TO_TABLE(TRIM(t.value,'{}'), ',') s
QUALIFTY SPLIT_PART(s.value, ':', 1) = 'id'
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362598.html
