Recursively call STUFF for results in a table valued function
Your example is a big integer so assuming this is typical you can use FORMAT for this

declare @Airbill DECIMAL(38) = 12345678912


select FORMAT(@Airbill,   '000-0000-0000') AS A,
       FORMAT(@Airbill,  '000-00-00-0000') AS B,
       FORMAT(@Airbill, '00000-0000-0000') AS C,
       FORMAT(@Airbill, '#####-####-####') AS D;


Returns

+---------------+----------------+-----------------+---------------+
|       A       |       B        |        C        |       D       |
+---------------+----------------+-----------------+---------------+
| 123-4567-8912 | 123-45-67-8912 | 00123-4567-8912 | 123-4567-8912 |
+---------------+----------------+-----------------+---------------+


If it isn't possible to change the mask formats to use 0 or # instead of 9 it can obviously easily be done at run time with a single REPLACE of 9 to the desired character.