給定一個表示路徑的字符串列('/11/22/33/44'
),如何返回給定數字後的下一個數字。從數組中獲取下一項
例如:
- 給出一個id =
22
,我想從路徑/11/22/33/44/
返回33
。 - 給出一個id =
44
,我想從路徑/11/22/33/44/
返回NULL
。
這是我使用的字符串轉換成一組記錄位:
SELECT unnest(string_to_array(trim(both '/' from '/11/22/33/44/'), '/')::integer[]);
unnest
--------
11
22
33
44
(4 rows)
但如何獲得「下一入口」這裏(所以給定22
- >33
)?
我認爲數字在給定的路徑內是唯一的嗎? –
不一定,但如果沒有更好的解決方案可用,則可以執行該操作。 –
通常,使用分隔符將數據保存在字符串字段中不是數據庫中的方式。相反,我會保留一個路徑表,每個路徑的父指針,或沿着這些行的東西。 – perh