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 ....
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