You can use regexp_replace(). To see the new values:
select regexp_replace(value, '^(.).*(-.*)$', '\1\2')
from t;
You can interpret this as:
^ from the beginning of the string
(.) take the first character and remember it.
.* ignore any number of characters (until the following patter)
(-.*) remember the hyphen and what follows
$ to the end of the string
The '\1\2' is the replacement, which is the first character and then the hyphen and everything afterwards.
To change them:
update t
set value = regexp_replace(value, '^(.).*(-.*)$', '\1\2');
Regular expressions are quite powerful. If you need to tweak the pattern matching rules, it is usually much simpler to adjust a regular expression than to deal with more cumbersome string operations.
Here is a db<>fiddle.
BLA-126orFOO-789? Do you always want the first letter from the part before the dash?