Index: wp-includes/comment.php
===================================================================
--- wp-includes/comment.php	(revision 20539)
+++ wp-includes/comment.php	(working copy)
@@ -222,6 +222,8 @@
 			'type' => '',
 			'user_id' => '',
 			'search' => '',
+			'search_type' => '',
+			'search_field' => '',
 			'count' => false
 		);
 
@@ -322,7 +324,7 @@
 		if ( '' !== $user_id )
 			$where .= $wpdb->prepare( ' AND user_id = %d', $user_id );
 		if ( '' !== $search )
-			$where .= $this->get_search_sql( $search, array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_content' ) );
+			$where .= $this->get_search_sql( $search, array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_content' ), $search_field, $search_type );
 
 		$post_fields = array_filter( compact( array( 'post_author', 'post_name', 'post_parent', 'post_status', 'post_type', ) ) );
 		if ( ! empty( $post_fields ) ) {
@@ -359,13 +361,20 @@
 	 * @param array $cols
 	 * @return string
 	 */
-	function get_search_sql( $string, $cols ) {
+	function get_search_sql( $string, $cols, $search_field='', $search_type='' ) {
 		$string = esc_sql( like_escape( $string ) );
+		$wildcard = '%';
+		if($search_type == 'exact') $wildcard = '';
 
 		$searches = array();
-		foreach ( $cols as $col )
-			$searches[] = "$col LIKE '%$string%'";
+		if($this->query_vars['search_field'] && in_array($search_field, $cols)) {
+			$searches[] = $this->query_vars['search_field'] . " LIKE '$wildcard$string$wildcard'";
+		} else {
+			foreach ( $cols as $col )
+				$searches[] = "$col LIKE '%$string%'";
+		}
 
+		if (count($searches) == 1) return ' AND ' . $searches[0]; 
 		return ' AND (' . implode(' OR ', $searches) . ')';
 	}
 }
Index: wp-admin/includes/class-wp-comments-list-table.php
===================================================================
--- wp-admin/includes/class-wp-comments-list-table.php	(revision 20539)
+++ wp-admin/includes/class-wp-comments-list-table.php	(working copy)
@@ -50,6 +50,8 @@
 		$comment_type = !empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : '';
 
 		$search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : '';
+		$search_type = ( isset( $_REQUEST['s_type'] ) ) ? $_REQUEST['s_type'] : '';
+		$search_field = ( isset( $_REQUEST['s_field'] ) ) ? $_REQUEST['s_field'] : '';
 
 		$user_id = ( isset( $_REQUEST['user_id'] ) ) ? $_REQUEST['user_id'] : '';
 
@@ -87,6 +89,8 @@
 		$args = array(
 			'status' => isset( $status_map[$comment_status] ) ? $status_map[$comment_status] : $comment_status,
 			'search' => $search,
+			'search_type' => $search_type,
+			'search_field' => $search_field,
 			'user_id' => $user_id,
 			'offset' => $start,
 			'number' => $number,
@@ -462,7 +466,7 @@
 			}
 			echo '<a href="edit-comments.php?s=';
 			comment_author_IP();
-			echo '&amp;mode=detail';
+			echo '&amp;mode=detail&amp;s_type=exact&amp;s_field=comment_author_IP';
 			if ( 'spam' == $comment_status )
 				echo '&amp;comment_status=spam';
 			echo '">';
