Evaluation of the NOT, AND, OR logical statements below in MySQL 5.5.30-log Community Server (GPL) replicate R's truth tables for NOT, AND, OR. See MySQL queries (below), which are in agreement with R truth table code posted in this thread:
bash-3.2$ mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 346 Server version: 5.5.30-log MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SELECT FALSE, NULL, TRUE; +-------+------+------+ | FALSE | NULL | TRUE | +-------+------+------+ | 0 | NULL | 1 | +-------+------+------+ 1 row in set (0.00 sec) mysql> SELECT NOT FALSE, NOT NULL, NOT TRUE; +-----------+----------+----------+ | NOT FALSE | NOT NULL | NOT TRUE | +-----------+----------+----------+ | 1 | NULL | 0 | +-----------+----------+----------+ 1 row in set (0.00 sec) mysql> SELECT FALSE AND FALSE, -> FALSE AND NULL, -> FALSE AND TRUE; +-----------------+----------------+----------------+ | FALSE AND FALSE | FALSE AND NULL | FALSE AND TRUE | +-----------------+----------------+----------------+ | 0 | 0 | 0 | +-----------------+----------------+----------------+ 1 row in set (0.00 sec) mysql> SELECT NULL AND NULL, -> NULL AND TRUE, -> TRUE AND TRUE; +---------------+---------------+---------------+ | NULL AND NULL | NULL AND TRUE | TRUE AND TRUE | +---------------+---------------+---------------+ | NULL | NULL | 1 | +---------------+---------------+---------------+ 1 row in set (0.00 sec) mysql> SELECT TRUE OR TRUE, -> NULL OR TRUE, -> FALSE OR TRUE; +--------------+--------------+---------------+ | TRUE OR TRUE | NULL OR TRUE | FALSE OR TRUE | +--------------+--------------+---------------+ | 1 | 1 | 1 | +--------------+--------------+---------------+ 1 row in set (0.00 sec) mysql> SELECT NULL OR NULL, -> FALSE OR NULL, -> FALSE OR FALSE; +--------------+---------------+----------------+ | NULL OR NULL | FALSE OR NULL | FALSE OR FALSE | +--------------+---------------+----------------+ | NULL | NULL | 0 | +--------------+---------------+----------------+ 1 row in set (0.00 sec) mysql> HTH, Bill William Michels, Ph.D. On Sun, May 21, 2017 at 7:00 AM, Hadley Wickham <h.wick...@gmail.com> wrote: > On Fri, May 19, 2017 at 6:38 AM, S Ellison <s.elli...@lgcgroup.com> wrote: >>> TRUE & FALSE is FALSE but TRUE & TRUE is TRUE, so TRUE & NA could be >>> either TRUE or FALSE and consequently is NA. >>> >>> OTOH FALSE & (anything) is FALSE so FALSE & NA is FALSE. >>> >>> As I said *think* about it; don't just go with your immediate knee-jerk >>> (simplistic) reaction. >> >> Hmm... not sure that was quite fair to the OP. Yes, FALSE & <anything> == >> FALSE. But 'NA' does not mean 'anything'; it means 'missing' (see ?'NA'). It >> is much less obvious that FALSE & <missing> should generate a non-missing >> value. SQL, for example, generally takes the view that any expression >> involving 'missing' is 'missing'. > > That's not TRUE ;) > > sqlite> select (3 > 2) OR NULL; > 1 > > sqlite> select (4 < 3) AND NULL; > 0 > > Hadley > > > -- > http://hadley.nz > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.