In emplode, IIRC...

null isn't a special word. It's just treated as another tag name by the parser. Since it doesn't actually exist as a tag name, the query process treats it as the empty string.

The only special tag names (as opposed to operators, e.g. LIKE) are true and false.

For non-equality comparison, != and <> should both work. You can also use the unary not operator, which is also available as !.

When comparing a string value with a boolean, the empty string is treated as false and any non-empty string is treated as true.

Internally, there are two different types of tags: those in the *1 files (and hence in the /empeg/var/database file) are all stored and processed as strings. Those in the dynamic data are treated according to their actual type.

When the tags get to the search functionality, any boolean values in the dynamic data are promoted to strings. If they're true, then they're represented by the string "yes". If they're false, then they're represented by the empty string.

When comparing an integer field with a boolean, any non-zero value is treated as true and tthe zero value is treated as false.

Note that some of this is likely to change as v3.0 approaches stability -- it'll be using the database from the Karma, probably, which does have proper types in it.

The long and the short of it is that, in emplode, you can search for source or not source and it'll do the right thing.
_________________________
-- roger