Index: wp-admin/includes/class-wp-ms-users-list-table.php
===================================================================
--- wp-admin/includes/class-wp-ms-users-list-table.php	(revision 17186)
+++ wp-admin/includes/class-wp-ms-users-list-table.php	(working copy)
@@ -31,6 +31,8 @@
 			'fields' => 'all_with_meta'
 		);
 
+		$args['search'] = ltrim($args['search'], '*');
+
 		if ( $role == 'super' ) {
 			$logins = implode( "', '", get_super_admins() );
 			$args['include'] = $wpdb->get_col( "SELECT ID FROM $wpdb->users WHERE user_login IN ('$logins')" );
Index: wp-admin/includes/class-wp-users-list-table.php
===================================================================
--- wp-admin/includes/class-wp-users-list-table.php	(revision 17186)
+++ wp-admin/includes/class-wp-users-list-table.php	(working copy)
@@ -51,6 +51,8 @@
 			'fields' => 'all_with_meta'
 		);
 
+		$args['search'] = '*' . $args['search'] . '*';
+
 		if ( $this->is_site_users )
 			$args['blog_id'] = $this->site_id;
 
Index: wp-includes/user.php
===================================================================
--- wp-includes/user.php	(revision 17186)
+++ wp-includes/user.php	(working copy)
@@ -465,11 +465,19 @@
 
 		$search = trim( $qv['search'] );
 		if ( $search ) {
-			$wild = false;
-			if ( false !== strpos($search, '*') ) {
-				$wild = true;
+			$leading_wild = ( ltrim($search, '*') != $search );
+			$trailing_wild = ( rtrim($search, '*') != $search );
+			if ( $leading_wild && $trailing_wild )
+				$wild = 'both';
+			elseif ( $leading_wild )
+				$wild = 'leading';
+			elseif ( $trailing_wild )
+				$wild = 'trailing';
+			else
+				$wild = false;
+			if ( $wild )
 				$search = trim($search, '*');
-			}
+
 			if ( false !== strpos( $search, '@') )
 				$search_columns = array('user_email');
 			elseif ( is_numeric($search) )
@@ -564,19 +572,21 @@
 	 *
 	 * @param string $string
 	 * @param array $cols
-	 * @param bool $wild Whether to allow trailing wildcard searches. Default is false.
+	 * @param bool $wild Whether to allow wildcard searches. Default is false for Network Admin, true for
+	 *  single site. Single site allows leading and trailing wildcards, Network Admin only trailing.
 	 * @return string
 	 */
 	function get_search_sql( $string, $cols, $wild = false ) {
 		$string = esc_sql( $string );
 
 		$searches = array();
-		$wild_char = ( $wild ) ? '%' : '';
+		$leading_wild = ( 'leading' == $wild || 'both' == $wild ) ? '%' : '';
+		$trailing_wild = ( 'trailing' == $wild || 'both' == $wild ) ? '%' : '';
 		foreach ( $cols as $col ) {
 			if ( 'ID' == $col )
 				$searches[] = "$col = '$string'";
 			else
-				$searches[] = "$col LIKE '" . like_escape($string) . "$wild_char'";
+				$searches[] = "$col LIKE '$leading_wild" . like_escape($string) . "$trailing_wild'";
 		}
 
 		return ' AND (' . implode(' OR ', $searches) . ')';
