Es bleibt ja auch ab Stelle 1 gefüllt.
Wenn die Bezeichnung schon 30 Zeichen lang ist, dann macht er durch das REPLACE 31 Zeichen daraus.
Das SUBSTR macht dann wieder 30. Allerdings geht das ganz rechte Zeichen auf diese Weise verloren.
Ist die Bezeichnung vorher kleiner 30, dann ändert er den Text und gut ist.
Wenn du nur die ändern willst, wo noch ein Zeichen frei ist, dann muss du die Länge das Feldes mit in die where-Bedingung packen.

PHP-Code:
update artikelstamm                                                
set bez1 
Replacebez1'Artikel''ARTIKEL®'
where bez1 like 'Artikel-%'  
  
and length(rtrim(bez1)) < 30