Tom Lane wrote:
"D. Dante Lorenso" <[EMAIL PROTECTED]> writes:
I'm looking for an operator that will compare NULL with NULL and evaluate as TRUE.
If the value I'm comparing is 0, I want it to match the NULL values.
[ raised eyebrow... ]  Sir, you need to rethink your data
representation.

Tom,

Here's what I'm doing, tell me if I'm crazy:

The column I'm comparing to is 'folder_id'. The folder_id column is a foreign key to a folder table. If folder_id is NULL, the row is not in a folder.

If I want to find all items in a specific folder, I want:

  SELECT *
  FROM mytable
  WHERE folder_id = 123;

But if I want to find all the items which are not in any folder, I want:

  SELECT *
  FROM mytable
  WHERE folder_id IS NULL;

I don't have any folder_id 0, so on a URL I might do this:

  http://xyz/page.php?fid=123
  http://xyz/page.php?fid=0

If folder_id is 0, I do the NULL comparison.

  SELECT *
  FROM mytable
  WHERE folder_id IS NOT DISTINCT FROM NULLIF(?, 0);

That seems to do what I want. Is it bad design? Something I'm missing about indexing a NULL or something like that?

-- Dante


---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

Reply via email to