Хранение значений в разделенных строках - очень плохая идея. Вы должны использовать соединительную таблицу.
Иногда мы застряли с очень плохими решениями других людей. Я бы, наверное, пошел на:
where ',' || encodedids || ',' like '%,MAT.GEO.107,%' or
',' || encodedids || ',' like '%,MAT.GEO.403,%' or
',' || encodedids || ',' like '%,MAT.GEO.409.01,%' or
',' || encodedids || ',' like '%,MAT.GEO.504.07,%' or
',' || encodedids || ',' like '%,MAT.GEO.901.5,%'
Вы можете использовать ту же идею разграничения с регулярными выражениями:
where ',' || encodedids || ',' ~ ',MAT.GEO.107,|,MAT.GEO.403,|,MAT.GEO.409.01,|,MAT.GEO.504.07,|,MAT.GEO.901.5,'