| Subject | Re: [firebird-support] Is there any logical difference? | 
|---|---|
| Author | setysvar | 
| Post date | 2019-08-09T17:15:59Z | 
Well, Karol, I would say that logically
      speaking they may be thought of as different. Though on this
      computer, running an old 2.5 Firebird version, I'm not capable of
      making two such statements differ in results and a very
      superficial internet search indicates that EXISTS always return
      true or false.
    By logically speaking, I mean in the
      case of <null>. Comparing an unknown value to anything
      basically is unknown. And not unknown is still unknown, hence I
      wouldn't be surprised if case 1 may not return values if it is
      unknown if things exist or not. In case 2, you explicitly return 0
      if unknown and hence more records could be returned.
    As I said, I'm not capable of forcing
      such a difference in an old Fb 2.5 version, but if you're on a
      different version, then maybe Firebird doesn't always return true
      or false when using EXISTS, but rather true, false or unknown?
    
    So, do the 211 rows returned only in
      case 2 have null in any of the columns compared in the exists?
    Set
    Den 09.08.2019 11:04, skrev
      liviuslivius liviuslivius@... [firebird-support]:
    
    HiI have the query where this make a difference and i do not know why...Is there any logical difference between this two statements? Or some sql feature difference?1. -------------------------NOT(EXISTS()OREXISTS())2. -------------------------CASE WHEN EXISTS() THEN 1 ELSE 0 END+CASE WHEN EXISTS() THEN 1 ELSE 0 END= 0----------------------------------------the query plans are exactly the same.First query return nothing, second one return 211 records.regardsKarol BeieniaszewskiPS. I resend my email as previous from Thu, 08 Aug 2019 15:00:25 +0200 is still not visible on the group