कैसे अद्यतन स्ट्रिंग संयोजन करने के लिए postgres में मौजूदा मूल्य के साथ एसक्यूएल

वोट
0

मैं मूल्य के साथ एक रिपोर्ट तालिका के रूप में नीचे देख सकते हैं

id  reportIdList
1   123, 124, 125
2   123, 124, 125
3   123, 124, 125, 127
4   123, 124, 125, 127

मैं में के रूप में अतिरिक्त मूल्य जोड़ने एसक्यूएल के साथ कुछ मदद की ज़रूरत है

id  reportIdList
1   123, 124, 125, *126*
2   123, 124, 125, *126*
3   123, 124, 125, *126*, 127
4   123, 124, 125, *126*, 127

वर्तमान में मैं अद्यतन करने का कोई तरीका

update reports set reportIdList = reportIdList || ',126';

जैसा कि नीचे दिखाया लेकिन इस तालिका को अपडेट होगा:

  id  reportIdList

  1   123, 124, 125, *126*
  2   123, 124, 125, *126*
  3   123, 124, 125, 127, *126*
  4   123, 124, 125, 127, *126*

हर प्रकार की सहायता का स्वागत है, धन्यवाद

03/12/2019 को 00:05
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

सबसे आसान तरीका है अपने खराब डिजाइन से निपटने के लिए एक समारोह बनाने के लिए है:

create or replace function add_element(p_input text, p_add text)
  returns text
as
$$
  select string_agg(x::text, ','  order by x)
  from (
    select trim(nullif(x,''))
    from unnest(string_to_array(p_input, ',')) as e(x)
    union 
    select p_add
  ) t(x);
$$
language sql;  

तो फिर तुम कर सकते हैं:

update the_table
  set reportidlist = add_element(reportidlist, 126);

लेकिन क्या तुम सच में अपने डेटा मॉडल को ठीक करने और तार अलग अल्पविराम संग्रह होना बंद हो जाना चाहिए।

03/12/2019 को 00:16
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more