Both mid() and mid$() works on strings, point is what they return. With $, it returns a string, without a variant. When in need of a string, use $, cause it will be faster (some even state that mid() isn't a string function, mid$() is, but that's perhaps going a bit far?).
Take a look at the topic "Returning Strings from Functions" in the help files for a list of which functions can return both strings and variants.
If the InStr function works, then why shouldn't InStrRev? InStr looks from the start of the string, so how would you determine which is the last "F"?
Point is, for some reasons some functions doesn't work in a query, then just create a wrapper function for it in a standard module (in VBE - Insert | Module), you should be able to just copy paste the function in my first reply, then call it with
Update input_table
Set input_field = myreplace(input_field)
So I think you'll need to either build a (in my eyes

) monstrous iif thingie, or use a public function.
And as a final irritation, had it been the reverse, the string had started with numbers, and there was a need to "trim off trailing letters", then the following would probably have worked:
Update input_table
Set input_field = val(input_field)