findsubstring function

I've used findsubstring function in the custom manipulator. For some reason, it would still pass a value when it's not an exact match. Example below: There is no flag for the first record because it's an exact match. But, it didn't flag the last record where the value has a missing letter 'E'. But for other cases, it was able to flag for wrong case, extra letter, missing a middle letter. It will give the position where the match begins for the first and last record, even though the last record is not exact match. What could be causing this issue?                                                                                            standard property was an array but I convert it to string using contract(',',standar);                                   flag := '';                                                                                                                                                  if findsubstring(standard, value) > 0 then flag := flag;                                                                            else flag := '1';  

valuestandardflag
ABCDEZXYG, ABCDE, MNOP
abcdeZXYG, ABCDE, MNOP1
ABCDEEZXYG, ABCDE, MNOP1
ABCEZXYG, ABCDE, MNOP1
ABCDZXYG, ABCDE, MNOP

Another question is, how do I turn a one column dataset into a array.

Site
abc
def
ghi

will become:

propertyvalue
Siteabc, def, ghi

Will appreciate any input! Thank you!