Assuming you have a PRI, in your ARS table you should have two entries for 911. If yours look like this below, its the sXXXXXXXXXX that is overwriting the caller ID with the main number.
11 / 911s2125551212 / Dial emergency / xx
911 / 911s2125551212 / Dial emergency / xx
To send the extension, remove the sXXXXXXXXXX. If the user making the call has an assigned DID in the ICRs it will send their ICR number instead of their extension.
11 / 911 / Dial emergency / xx
911 / 911 / Dial emergency / xx
If you have a SIP trunk it can get more complicated if your SIP trunk SIP URI's are setup to use Internal Data instead of Auto. Internal Data pulls from the SIP tab of the user profile.
If you have POTS lines, you can't change the caller ID.
I'm not a big fan of the "call your vendor" answer, but getting your E911 dialed in might be one of the times it's a good idea.