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

टेक्स्ट ऐरे पर `ट्रिम ()` और `regexp_replace ()` लागू करें

आपका कोड कभी नहीं बदलता multiplevalues सरणी। यह बस प्रत्येक तत्व को बदलता है, फिर उस नए मूल्य को दूर फेंक देता है।

आपको एक वेरिएबल की आवश्यकता है जहां आप अपने परिणामों को इसमें जोड़ सकें:

CREATE OR REPLACE FUNCTION manipulate_array(multiplevalues text[])
RETURNS text[] AS 
$BODY$
  DECLARE 
    singlevalue text;
    l_result text[] := '{}'::text[]; -- initialize with an empty array
  BEGIN
    FOREACH singlevalue IN ARRAY multiplevalues LOOP
        SELECT trim(regexp_replace(singlevalue, '\s+', ' ', 'g')) INTO singlevalue;
        l_result := l_result || singlevalue; -- append to the result
    END LOOP;

    RETURN l_result; -- return the new array, not the old one
  END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

लेकिन यह एक unnest और array_agg और एक सादे SQL फ़ंक्शन (बल्कि फिर PL/pgSQL)

का उपयोग करके थोड़ा आसान किया जा सकता है।

आपको पहले सरणी को खोलना होगा, मानों को ट्रिम करना होगा और कुल मिलाकर एक सरणी में वापस आना होगा।

मुझे यकीन नहीं है कि मैं समझता हूं कि आप क्या करने की कोशिश कर रहे हैं, लेकिन यह सरणी के अंदर सभी मानों को ट्रिम कर देगा और एक नया लौटाएगा:

create function trim_all(p_values text[])
  returns text[]
as
$$
  select array_agg(trim(regexp_replace(t.v, '\s+', ' ', 'g')) order by t.nr)
    from unnest(p_values) with ordinality as t(v, nr);
$$
language sql;


  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. एकल क्वेरी के साथ कॉलम प्रकार का नाम बदलने और बदलने के लिए PostgreSQL क्वेरी

  3. डेटाबेस क्वेरी करने के लिए Django प्रपत्र (मॉडल)

  4. Postgresql में अंतर्राष्ट्रीयकृत नियमित अभिव्यक्ति

  5. यूयूआईडी की सरणी पर पोस्टग्रेएसक्यूएल जीआईएन इंडेक्स