Francisco Olarte <folarte@peoplecall.com> writes: > Anyway, you may notice char() discards trailing blanks, varchar does not:
More precisely, converting from char(n) to varchar or text discards trailing blanks. Since both substring() and the || operator take text argument types, an implicit coercion to text is happening in these examples ... and that's where the blanks went.