你需要做的是在兩個階段:
- 分裂由
'|'
- 分裂由
'='
您可以使用string_to_array
這樣的:
SELECT
'stack_size'|| id || ': ' || trim(split2[1]),
'stack_price'|| id || ': ' || trim(split2[2])
FROM (
SELECT row_number() OVER() AS id, string_to_array(sub.split1, '=') as split2
FROM (
(SELECT unnest(string_to_array(stack_prices, '|')) AS split1 FROM company_product)
) sub
) sub
編輯:
以上查詢的輸出將在您寫入問題時變得非常簡單。它可以使用到proccess一行只如果你想(當然,你可以把這個存儲過程)
更通用的解決方案有6列在一排有一個去:
SELECT
stack_prices,
split1_1[1] as ss1, split1_1[2] as sp1,
split1_2[1] as ss2, split1_2[2] as sp2,
split1_3[1] as ss3, split1_3[2] as sp3
FROM (
SELECT
stack_prices,
regexp_split_to_array(split1[1], E'=') as split1_1,
regexp_split_to_array(split1[1], E'=') as split1_2,
regexp_split_to_array(split1[1], E'=') as split1_3
FROM (
select
stack_prices,
regexp_split_to_array(stack_prices, E'\\ \\|\\ ') as split1
from company_product
) sub
) sub
你應該考慮讓你的數據庫中的關係,因爲大多數SQL引擎不適合於這種轉變。 –
一個數據庫字段只能包含數據而不能包含一組數據 –
對我來說不幸的是我不能用stack_prices列修改表 –