**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`
auto findByValue(const T & value) const
    {
        const auto it = value_to_name_map.find(value);
        if (it == std::end(value_to_name_map))
            throw Exception{"Unexpected value " + toString(value) + " in enum", ErrorCodes::BAD_ARGUMENTS};
        return it;
    }
    const StringRef & getNameForValue(const T & value) const
    {
        return findByValue(value)->second;
    }
    T getValue(StringRef field_name, bool try_treat_as_id = false) const;
    template <typename TValues>
    bool containsAll(const TValues & rhs_values) const
    {
        auto check = [&](const auto & value)
        {
            auto it = name_to_value_map.find(value.first);
            
            
            if (it == name_to_value_map.end())
                return value_to_name_map.count(value.second) > 0;
            
            return it->value.second == value.second;
        };
        return std::all_of(rhs_values.begin(), rhs_values.end(), check);
    }
};
}