मैं मान लूंगा कि arr_str
text[]
type प्रकार का है (हालांकि आपने उनके लिए उचित प्रारूप का उपयोग नहीं किया है, इसलिए मैं गलत हो सकता हूं; यदि ऐसा है, तो आपको अपना मान text[]
पर डालना होगा। )।
निम्नलिखित कथन का उपयोग करें, यदि आप दोहराव को हटाना चाहते हैं, जो पहले से ही arr_str
में मौजूद हैं कॉलम:
update tabl1
set arr_str = (select array_agg(distinct e) from unnest(arr_str || '{b,c,d}') e)
where not arr_str @> '{b,c,d}'
या, जब आप मौजूदा दोहराव को संरक्षित करना चाहते हैं, तो निम्न का उपयोग करें:
update tabl1
set arr_str = arr_str || array(select unnest('{b,c,d}'::text[]) except select unnest(arr_str))
where not arr_str @> '{b,c,d}'
ये दोनों कथन पंक्तियों को स्पर्श नहीं करेंगे, जो वैसे भी प्रभावित नहीं होंगे (देखें where not arr_str @> '{b,c,d}'
विधेय)। यह आमतौर पर सबसे अच्छा अभ्यास है, और जब ट्रिगर शामिल होते हैं, तो लगभग हमेशा इसकी अनुशंसा की जाती है।