diff --git a/src/sql/engine/expr/ob_expr_replace.cpp b/src/sql/engine/expr/ob_expr_replace.cpp index 6c84a928dd..5db20b1e75 100644 --- a/src/sql/engine/expr/ob_expr_replace.cpp +++ b/src/sql/engine/expr/ob_expr_replace.cpp @@ -112,8 +112,11 @@ int ObExprReplace::calc_result_typeN(ObExprResType &type, if (from_len == 0 || from_len >= to_len) { type.set_length(ori_len); } else { - type.set_length(MIN(ori_len / from_len * to_len + ori_len % from_len, - OB_MAX_VARCHAR_LENGTH)); + result_len = ori_len / from_len * to_len + ori_len % from_len; + if (result_len < 0 || result_len > OB_MAX_VARCHAR_LENGTH) { + result_len = OB_MAX_VARCHAR_LENGTH; + } + type.set_length(result_len); } } }