**Use case**
Provide "Did you mean: ..." with nearest matches when user made a typo in Enum name or column name.

**Describe the solution you'd like**
See `NamePrompter.h`
{
    for (const auto & name_and_value : values)
    {
        const auto inserted_value = name_to_value_map.insert(
            { StringRef{name_and_value.first}, name_and_value.second });
        if (!inserted_value.second)
            throw Exception{"Duplicate names in enum: '" + name_and_value.first + "' = " + toString(name_and_value.second)
                    + " and " + toString(inserted_value.first->getMapped()),
                ErrorCodes::SYNTAX_ERROR};
        const auto inserted_name = value_to_name_map.insert(
            { name_and_value.second, StringRef{name_and_value.first} });
        if (!inserted_name.second)
            throw Exception{"Duplicate values in enum: '" + name_and_value.first + "' = " + toString(name_and_value.second)
                    + " and '" + toString((*inserted_name.first).first) + "'",
                ErrorCodes::SYNTAX_ERROR};
    }
}
template <typename T>
T EnumValues<T>::getValue(StringRef field_name, bool try_treat_as_id) const