CREATE OR REPLACE FUNCTION split_text_sem_quebrar_palavra(texto TEXT, limite INT) RETURNS TEXT[] AS $$ DECLARE resultado TEXT[]; parte TEXT := ''; palavras TEXT[]; palavra TEXT; BEGIN -- Divide o texto em palavras palavras := regexp_split_to_array(texto, '\s+'); FOREACH palavra IN ARRAY palavras LOOP IF length(parte || ' ' || palavra) <= limite THEN IF parte = '' THEN parte := palavra; ELSE parte := parte || ' ' || palavra; END IF; ELSE resultado := array_append(resultado, parte); parte := palavra; END IF; END LOOP; -- Adiciona a Ășltima parte IF parte <> '' THEN resultado := array_append(resultado, parte); END IF; RETURN resultado; END; $$ LANGUAGE plpgsql;