|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
CSV逻辑上由逗号分割数据的存储引擎应当人人都很分明,我们在sql中要查询某列值为null的一切了局集时,查询前提应当如许写
select*from表where字段isnull
而利用select*from表where字段=null是查不到准确的了局的。那这是为何呢?要分明为何,就必要懂得sql中的三值逻辑了。
在SQL中逻辑表达式的大概值包含TRUE、FALSE和UNKNOWN,它们被称之为三值逻辑。
我们晓得,在别的的言语中,逻辑表达式只要两种,要末是true,要末就是false。而sql中却存在第三个逻辑表达式UnKnown,这个是sql中独有的。从字面意义上我们能够解理该值的意义是:甚么都不晓得,就是甚么都不是。一样平常情形下我们将任何值(包含NULL自己)与NULL做对照的时分,城市前往UnKnown。而在查询表达式中(好比where与having中),UnKnown会视为false。以是我们就分明了为何select*from表where字段=null查不到准确的了局的缘故原由了。
但并非在一切场情下UnKnown城市视为false来处置,在check束缚中,UnKnown就会视为true来处置。这就是为何我们设置某个字段的值必需年夜于即是0的情形下,我们还能够往该字段中拔出Null值,那是由于在check束缚中null>=0的逻辑了局UnKnown会被看成true来处置。
必要注重的是,在分组子句与排序子句中,sql视null是相称的
即:
1,GROUPBY会把一切NULL值分到一组。
2,ORDERBY会把一切NULL值分列在一同。限制,如果WHERE子句的查询条件里有不等号(WHEREcoloum!=),MySQL将无法使用索引。类似地,如果WHERE子句的查询条件里使用了函数(WHEREDAY(column)=),MySQL也将无法使用索引。 |
|