Index: /trunk/psLib/src/db/psDB.c
===================================================================
--- /trunk/psLib/src/db/psDB.c	(revision 25314)
+++ /trunk/psLib/src/db/psDB.c	(revision 25315)
@@ -2261,4 +2261,5 @@
     PS_DB_OP_LE,
     PS_DB_OP_GE,
+    PS_DB_OP_NE,
 } psDBOpValue;
 
@@ -2308,6 +2309,10 @@
             opStr = "<";
             op = PS_DB_OP_LT;
-        }
-    }
+        } else if (strstr(item->comment, "!=")) {
+            opStr = "!=";
+            op = PS_DB_OP_NE;
+        }
+    }
+
 
     // XXX why are >, < searches not supported here????
@@ -2341,4 +2346,7 @@
         case PS_DB_OP_EQ:
             psStringAppend(&query, "(ABS(%s - %.8f) < %.8f)", itemName, (float)(item->data.F32), PS_DB_FLT_PAD);
+            break;
+        case PS_DB_OP_NE:
+            psStringAppend(&query, "(ABS(%s - %.8f) >= %.8f)", itemName, (float)(item->data.F32), PS_DB_FLT_PAD);
             break;
         case PS_DB_OP_LE:
@@ -2360,4 +2368,7 @@
             psStringAppend(&query, "(ABS(%s - %.17f) < %.17f)", itemName, (float)(item->data.F64), PS_DB_DBL_PAD);
             break;
+        case PS_DB_OP_NE:
+            psStringAppend(&query, "(ABS(%s - %.17f) >= %.17f)", itemName, (float)(item->data.F64), PS_DB_DBL_PAD);
+            break;
         case PS_DB_OP_LE:
         case PS_DB_OP_LT:
@@ -2376,4 +2387,7 @@
         case PS_DB_OP_EQ:
             psStringAppend(&query, "%s = %d", itemName, (int)(item->data.B));
+            break;
+        case PS_DB_OP_NE:
+            psStringAppend(&query, "%s != %d", itemName, (int)(item->data.B));
             break;
         default:
@@ -2397,5 +2411,5 @@
                 psStringAppend(&query, "%s LIKE '%s'", itemName, item->data.str);
             } else {
-                psStringAppend(&query, "%s = '%s'", itemName, item->data.str);
+                psStringAppend(&query, "%s %s '%s'", itemName, opStr, item->data.str);
             }
         }
