coryd.dev/queries/functions/parse_country_field.psql

21 lines
608 B
Text

CREATE OR REPLACE FUNCTION normalize_country_field(countryField TEXT)
RETURNS TEXT AS $$
DECLARE
delimiters TEXT[] := ARRAY[',', '/', '&', 'and'];
countries TEXT[];
temp TEXT[];
result TEXT := '';
i INTEGER;
BEGIN
countries := string_to_array(countryField, ',');
FOR i IN 1..array_length(delimiters, 1) LOOP
temp := ARRAY[]::TEXT[];
FOREACH result IN ARRAY countries LOOP
temp := array_cat(temp, string_to_array(result, delimiters[i]));
END LOOP;
countries := temp;
END LOOP;
result := array_to_string(countries, ' ');
RETURN trim(result);
END;
$$ LANGUAGE plpgsql;