I’m not sure I agree. By your definition anything that isn’t added, subtracted, multiplied or divided should not be stored in a database as a number. As an example I happen to store status codes or error codes in a database as INTs, these codes are only EVER comprised of numbers but no arithmetic is ever performed on them. Should I change these to CHARs?
With regards to telephone representation, I’ve already covered this in posts above. Storing them as strings doesn’t solve this issue because as you pointed out the number can be represented as 01234567890 or 01234 567890 or 01234 567 890 or (01234) 567890 or 01234-567-890… which format do you store? Therefore the need to manipulate the input/output cannot be avoided if you wish to handle these cases. Therefore I cannot see any advantage to storing as a string instead of a number in this case.
This is why I’m questioning the “universally” accepted method of storing as a string. It’s important to question these things to have a better understanding of why. This is after all a discussion forum so I want to find out why “everyone” says it’s wrong when it seems right to me in this particular situation.
Telephone extensions aren’t used in my case but that would be an easy addition - store them in their own field.