Thread: Re: Strange result with select/not null/OR
That is because '' is not equal to null and therefore the first part (sp_link is not null) satisfies the requirement. Avi On Monday, Jun 9, 2003, at 14:48 America/Chicago, Fernando Papa wrote: > > Hi all! > > I get a strange result with this query: > > SELECT count(*) > FROM CONT_CAT > WHERE id_instal = 2 > and id_cat = 2 > and (sp_link IS NOT NULL OR sp_link <> '') > > > I have one row with an empty value ('') on sp_link, so, when I execute > the query expect 0 on the result. > I don't know why the result is 1. > If I only put the last part ("sp_link <> ''") everithing goes ok. > But I need to check both conditions, IF is null and IF is empty. And I > can't understand why doesn't work.
I think that is because if sp_link = '' then sp_link is not null. There was another thread recently about the null vs ''. Vincent Hikida, Member of Technical Staff - Urbana Software, Inc. "A Personalized Learning Experience" www.UrbanaSoft.com ----- Original Message ----- From: "Fernando Papa" <fpapa@claxson.com> To: <pgsql-general@postgresql.org> Sent: Monday, June 09, 2003 12:48 PM Subject: [GENERAL] Strange result with select/not null/OR Hi all! I get a strange result with this query: SELECT count(*) FROM CONT_CAT WHERE id_instal = 2 and id_cat = 2 and (sp_link IS NOT NULL OR sp_link <> '') I have one row with an empty value ('') on sp_link, so, when I execute the query expect 0 on the result. I don't know why the result is 1. If I only put the last part ("sp_link <> ''") everithing goes ok. But I need to check both conditions, IF is null and IF is empty. And I can't understand why doesn't work. Any ideas? Thanks in advance! -- Fernando O. Papa DBA ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster
Hi all! I get a strange result with this query: SELECT count(*) FROM CONT_CAT WHERE id_instal = 2 and id_cat = 2 and (sp_link IS NOT NULL OR sp_link <> '') I have one row with an empty value ('') on sp_link, so, when I execute the query expect 0 on the result. I don't know why the result is 1. If I only put the last part ("sp_link <> ''") everithing goes ok. But I need to check both conditions, IF is null and IF is empty. And I can't understand why doesn't work. Any ideas? Thanks in advance! -- Fernando O. Papa DBA
Fernando Papa wrote: > > and (sp_link IS NOT NULL OR sp_link <> '') If sp_link <> '' then it is of course NOT NULL so ... you get: sp_link IS NOT NULL --> true sp_link <> '' --> false true OR false === true ;) If I understand what you expect correctly, what you need is: AND sp_link IS NOT NULL AND sp_link <> '' HTH, -- Jean-Christian Imbeault