Radioenums are handled as enums in Suitecrm which are mapped to varchar(100)
With the utf-8 charset varchar(100) can take up to 300 Bytes in a MYSQL table row. Mysql does not allow more than 64k in a row except for blobs and text columns which are stored externally.
What is the best way to replace varchar(100) with text for radioenums?
The general rule is that whenever people are adding too many custom fields, they should be considering different database designs. Multiplicity should be handled with related tables that capture what is common in each thing, not with tons of different things.
If you can tell us what your data is like, roughly, maybe I can suggest a different design.
So typically if all of those are “Requirements”, you would add a new module called Requirements and relate it to the Opportunities. Each requirement could have a name, and some generic properties where you can fit all the information you need. These requirements would show as a subpanel, and you could list them, or search for them, get reports by Requirement, etc.
You can also consider working with an exisitng module (saves you work and gives you added functionality which might be useful). The Product module and the Quotes Line items are possibilities you could examine.