| I can confirm this, at least for PostgreSQL 9.4 {{ =# SELECT CONCAT('hello', NULL, 'there') AS salute; salute ------------ hellothere (1 row) }} The NULL elements where "collapsed" into an empty string. However: {{ SELECT ('hello' || NULL || 'there') AS salute; salute -------- <--- nothing shown here, but it's a NULL (1 row) }} If any of the piped operands is NULL, the whole expression will return NULL This is exacerbated by the fact that an HQL CONCAT function is being translated as || by many dialects, instead of respecting the explicit CONCAT call. |