S
I would ask - what is the the purpose of this HID?
If it constructed from database-internal, numeric, surrogate key values, then you should never be showing them to a User anyway, so what's the purpose of assembling them in this way?
Anyway ...
The most important question to ask before deciding how to store any piece of Data is this:
How are you going to use this Data?
How are you going to "get to" this Data? (Do you need to index it?)
What are you going to do with this Data, having got it? (Do you need to further subdivide it?)
This last is interesting, because one thing you might want to do its to find an entry's parent (e.g. Seattle -> Washington). But how can you do that efficiently, armed only with the complete HID? You'd need to dissect the value, extracting the last element (which is almost always more difficult than getting the first) and then go look up the parent record.
In such a case, it might be better to hold only the parent record's id and use a recursive query to derive the HID value completely dynamically.
If your id values ever changed (which, of course, they never, ever should) then your full HIDs would be all fouled up and would have to regenerated en masse and that's painful.