Re: query-question - Mailing list pgsql-general

From Stephan Szabo
Subject Re: query-question
Date
Msg-id 20030911080207.B29873-100000@megazone.bigpanda.com
Whole thread Raw
In response to query-question  (Alexander Blüm <mailinglists1@gmx.de>)
Responses Re: query-question  (Alexander Blüm <mailinglists1@gmx.de>)
List pgsql-general
On Thu, 11 Sep 2003, [ISO-8859-1] Alexander Bl�m wrote:

> hello,
>
> I'm facing an odd problem.
> I have a query:
>
> SELECT "K�rzel", "Autor(en)", "Titel"
> FROM "tblTitelangaben"
> WHERE "Titel"||"K�rzel"||"Monographie-K�rzel"||"Autor(en)" ILIKE '%er%';
>
> this works like a charm.
>
> but if I add another ||"something" - which might be emtpy, I get no
> results.. why?
>
> WHERE
> "Titel"||"K�rzel"||"Monographie-K�rzel"||"Autor(en)"||"Herausgeber"
> ILIKE '%er%';
>
> || is the same as "OR", is it not?

No, it's string concatenation. Also, remember that NULLs are special
a || NULL is NULL.  You can use coalesce(field,"") to get an empty string
if field is NULL.

> 1 OR 0 = 1
> 1 OR 1 = 1
> 0 OR 0 = 0
> right?

And even for OR, the above isn't true in SQL because of NULLs.
  1 | 0 | N
1 1 | 1 | N
0 1 | 0 | N
N N | N | N


pgsql-general by date:

Previous
From: Vivek Khera
Date:
Subject: Re: A Question About Insertions -- Performance
Next
From: Alexander Blüm
Date:
Subject: Re: query-question