First of all, regardless of the DB2 version concatenation requires character operands; you cannot concatenate a string and an integer -- DB2 will attempt to implicitly convert non-character data types to characters. It is best if you do explicit conversion to avoid errors.
Secondly, your SQL seems unnecessarily complex. Instead of
CASE COALESCE(NUM_COLUMN,111)
WHEN 111
THEN 'NUM_COLUMN is null'
else 'NUM_COLUMN='''||NUM_COLUMN||''''
END
you can simply do this:
CASE WHEN NUM_COLUMN IS NULL
THEN 'NUM_COLUMN is null'
ELSE 'NUM_COLUMN='||VARCHAR(NUM_COLUMN)
END
Note that in your original code you compare NUM_COLUMN
with a character literal, which will also cause implicit conversion. Not all DB2 platforms support implicit conversion between all data types, so once again, do not rely on it but use explicit conversion instead.