PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एक सरणी के प्रत्येक तत्व (यदि मौजूद नहीं है) को एक सरणी कॉलम में पोस्टग्रेज करता है या सेट करता है

मैं मान लूंगा कि 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}' विधेय)। यह आमतौर पर सबसे अच्छा अभ्यास है, और जब ट्रिगर शामिल होते हैं, तो लगभग हमेशा इसकी अनुशंसा की जाती है।

http://rextester.com/GKS7382



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अस्थायी डेटाबेस डिज़ाइन, एक मोड़ के साथ (लाइव बनाम ड्राफ्ट पंक्तियाँ)

  2. रोलअप के साथ SQL सर्वर ग्रुप के लिए PostgreSQL समकक्ष

  3. क्या मैं npgsql 3.0.0 के साथ एक पोस्टग्रेस्क्ल साइटटेक्स्ट फ़ील्ड पढ़ सकता हूं?

  4. एक कस्टम संकलित अभिव्यक्ति में बाइंडपरम () का उपयोग कैसे करें?

  5. SQLAlchemy में Postgres/PostGIS View के साथ काम करें