Maybe I'm missing something, but if you have the trailing spaces in the value stored in the table, it is mandatory that DB2 takes those spaces into consideration during string comparison. After all, those spaces are part of the string value and you can't expect that a comparison only considers a part of the value.
As for the 2nd query, could you shown us the result from an "SELECT '@' || COMMUN_DTL_NM || '@' FROM MA1.T5420_comm_detail"? I'm asking because you may not have exactly the value "Optima Credit Card" in your table. Maybe you assume a case-insensitive string comparison, too?