size_t size = data_from.size() / step;
            typename ColumnVector<ToFieldType>::Container & vec_res = col_res->getData();
            vec_res.resize(size);
            size_t offset = 0;
            size_t copy_size = std::min(step, sizeof(ToFieldType));
            for (size_t i = 0; i < size; ++i)
            {
                ToFieldType value{};
                memcpy(&value, &data_from[offset], copy_size);
                vec_res[i] = value;
                offset += step;
            }
            return col_res;
        }
        else if constexpr (support_between_float_integer)
        {
            ColumnPtr res;
            if (castType(arguments[0].type.get(), [&](const auto & type)
                {
                    using DataType = std::decay_t<decltype(type)>;
                    using T = typename DataType::FieldType;
                    const ColumnVector<T> * col = checkAndGetColumn<ColumnVector<T>>(arguments[0].column.get());
                    auto col_res = ColumnType::create();
                    reinterpretImpl(col->getData(), col_res->getData());
                    res = std::move(col_res);
                    return true;
                }))
            {
                return res;
            }