Я бы преобразовал список в массив, разложил его по строкам, затем отфильтровал те, которые должны быть сохранены, и агрегировал его обратно в строку:
select string_agg(t, ',')
from unnest(string_to_array('AC001,AD001,AE001,SA001,AE002,SD001',',') as x(t)
where x.t like 'AE%'; --<< only keep those
Это не зависит от количества элементов встрока и может быть легко расширена для поддержки более сложных условий.
Это хороший пример того, почему хранение значений через запятую в одном столбце не является хорошей идеей для начала.