The best answer to your question is "C" (CTE, I think, in MSSS).
Actually the best question is: should I store this calculated value or recalculate it for each row, every time I query the table.
Are there 10 rows in the table and always 10 rows?
Are strings constantly added?
Do you have a cleaning strategy in place or just let it grow?
Request this table only once a month?
If this is a "long time" function (even after you have optimized it), why do you want to execute it more than once?
You asked once, but you really ask once per line, per request.
Storing a response in an index or "virtual column"
Pros:
Compute exactly once per line. Request time does not grow linearly.
Cons: Increases insert / update time
Calculation every time
Pros:
Insert / Update Time Optimized
Cons: Request time increases with row counting. (not scalable)
If you ask once a month why you care about how poor the performance is, set up something that actually has a big impact on your operations (very little).
If you do not insert a bunch of (depending on your hardware) rows per second, does it spend time on the front to make a big difference?