Different results for logically same, but textually different queries
Do you have null values? If yes, the second form will be evaluated as null.

For example:

NULL || 'needle' = NULL


This way the second form can have less values than first one.

Try this:

coalesce(textfield1 ,'') || coalesce(textfield2,'')