Apologies, I found the answer in the documentation:
http://www.postgresql.org/docs/9.0/static/functions-conditional.html says:
"If the ELSE clause is omitted and no condition is true, the result is
null."
Best regards
Seref
On Tue, Feb 12, 2013 at 10:39 AM, Seref Arikan <
serefarikan@kurumsalteknoloji.com> wrote:
> Greetings,
> I want to use CASE WHEN to make sure that I don't try to call a function
> on a row that does not exist. This is used within a WHERE statement as
> follows (without the function call I've mentioned);
>
> WHERE
> CASE WHEN EXISTS(SELECT ATRNODE.featuremappingid from ELEMENT1,
> ATRNODE where ELEMENT1.pathstring || '/' || 'name/value' =3D
> ATRNODE.pathstring)
> THEN
> ( ELEMENT1.pathstring || '/' || 'name/value' =3D ATRNODE.pathstri=
ng
> and
> ATRNODE.valstring =3D 'M=E5ltillst=E5nd' --this will be where t=
he
> function is going to be used
> )
> ELSE
> ELEMENT1.id =3D -1291927189371983619872981729
> END
>
> The overall mechanism lets me apply a constraint so that if a row does no=
t
> exist, the query returns no results, without attempting to process
> ATRNODE.valstring value (which represents more complicated info that will
> exist in the row in other cases)
> The thing is, when I omit the ELSE, the query still returns no results if
> the row does not exist. It is as if an ELSE statement is added with an
> impossible constraint, just like the one I'm explicitly providing.
> I'm keeping the ELSE so that I explicitly introduce a where statement
> that will not correspond to any rows, but what is happening when I omit
> ELSE, so that the query still functions as it should?
>
> Best regards
> Seref
>
>