substring(text from 1 for (120 - length(substring_index(substring(text from 1 for 120),' ', -1)))) as text
Es wird alles bis auf das letzte Wort, welches komplett in “weniger als 120 Zeichen” passt, abgeschnitten. Keine Kürzung innerhalb eines Wortes oder - was noch schlimmer wäre - Einheiten.