Alors que votre solution fonctionne bien, il y a beaucoup de frais généraux à elle, en particulier si le « pour chaque » est une requête lente. Vous feriez mieux de créer une table temporaire des valeurs que vous voulez et d'ajouter cela à la requête. Et comme vous utilisez des 'matches', assurez-vous que field1 est dans un index décent ou que la performance sera horrible!
DEFINE VARIABLE v-cnt AS INTEGER NO-UNDO.
DEFINE VARIABLE segment AS longchar NO-UNDO.
define temp-table tt-element no-undo
field element as character
index elidx is primary element.
assign segment = "abc;bcd;efg;".
do v-cnt = 1 to num-entries(segment,';'):
create tt-element.
tt-element.element = entry(v-cnt,segment,';').
end.
for each tt-element,
each table1 no-lock
where table1.field1 matches '*' + tt-element.element + '*':
message table1.field1
view-as alert-box info buttons ok.
end.