Thread: different between || and && in a statement

different between || and && in a statement

From
guenther@laokoon.IN-Berlin.DE (Christian Guenther)
Date:
Hi,

I hope theis is the last question for the next time:

1st statement:

SELECT (sum(case when dict.word = 'museum' then 1 else 0 end) 
&& sum(case when dict.word = 'immer' then 1 else 0 end)) as qu , dict.url_id
^^             FROM dict, url             WHERE url.rec_id = dict.url_id                  AND url.url LIKE '%%'
         AND dict.word in ('museum','immer')             GROUP BY dict.url_id              HAVING sum(case when
dict.word= 'museum' then 1 else 0 end) && 
 
sum(case when dict.word = 'immer' then 1 else 0 end) > 0                  ^^

The result is:

ERROR:  Unable to identify an operator '&&' for types 'int4' and 'int4'       You will have to retype this query using
anexplicit cast
 

but if a do it with :

SELECT (sum(case when dict.word = 'museum' then 1 else 0 end)
|| sum(case when dict.word = 'immer' then 1 else 0 end)) as qu , dict.url_id
^^             FROM dict, url            WHERE url.rec_id = dict.url_id                  AND url.url LIKE '%%'
       AND dict.word in ('museum','immer')            GROUP BY dict.url_id            HAVING sum(case when dict.word =
'museum'then 1 else 0 end) || 
 
sum(case when dict.word = 'immer' then 1 else 0 end) > 0                  ^^

.... all is OK

Whats the different between the logical expression && and || and is there
a way to get && working?

Thanks for any hints. I hope the isn't a stupid question.

Christian

-- Christian Guenther                              Kunsthistoriker Fax: +49 030 4464152             E-mail:
cg@kunst-und-kultur.deTel:+49 030 4442931                http://kunst-und-kultur.de/     Museen, Kuenstler,
Ausstellungen,Kunstprojekte ....
 


Re: [SQL] different between || and && in a statement

From
Herouth Maoz
Date:
At 21:43 +0200 on 25/10/1999, Christian Guenther wrote:


> Whats the different between the logical expression && and || and is there
> a way to get && working?

It's really not clear what you are trying to achieve here. Neither || nor
&& are logical operators. In Postgres, || is string concatenation, not
"or". What you would get in sum(...) || sum( ... ) is the concatenation of
the two sums. If one is 32 and the other 17, you'd get 3217.

In any case, what sense does a logical operator have between two integers?
Logical operators should connect between logical operands. But the sums are
sums of integers. There is no such thing as a boolean sum. Unless you meant
to do a cumulative "or" operation between all the rows that have the proper
string value? In that case, you really have to build a custom aggregate for
it.

In any case, in SQL, the word for "or" is... OR. The word for "and" is AND
and the word for "not" is NOT.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma