Fix _where() escaping operators
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php
index 3b45bba..7a54fce 100644
--- a/system/database/DB_query_builder.php
+++ b/system/database/DB_query_builder.php
@@ -426,6 +426,10 @@
 		{
 			$prefix = (count($this->qb_where) === 0 && count($this->qb_cache_where) === 0) ? '' : $type;
 
+			$k = $this->_has_operator($k)
+				? $this->protect_identifiers(substr($k, 0, strrpos(rtrim($k), ' ')), FALSE, $escape).strrchr(rtrim($k), ' ')
+				: $this->protect_identifiers($k, FALSE, $escape);
+
 			if (is_null($v) && ! $this->_has_operator($k))
 			{
 				// value appears not to have been set, assign the test to IS NULL
@@ -436,7 +440,6 @@
 			{
 				if ($escape === TRUE)
 				{
-					$k = $this->protect_identifiers($k, FALSE, $escape);
 					$v = ' '.$this->escape($v);
 				}
 
@@ -445,10 +448,6 @@
 					$k .= ' = ';
 				}
 			}
-			else
-			{
-				$k = $this->protect_identifiers($k, FALSE, $escape);
-			}
 
 			$this->qb_where[] = $prefix.$k.$v;
 			if ($this->qb_caching === TRUE)