2018-05-10

NOT NULL列用IS NULL也能查到數(shù)據(jù)?

技術(shù)小能手?2018-05-07 09:17:13?瀏覽200?評(píng)論0

云棲社區(qū)


測(cè)試


odbc

摘要:?測(cè)試表DDL CREATE TABLE `t1` ( `id` int(11) DEFAULT NULL, `dt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=InnoDB; 插入測(cè)試數(shù)據(jù): yejr@imysql.

測(cè)試表DDL

CREATE TABLE `t1`(`id`int(11)DEFAULTNULL,`dt` datetime NOTNULLDEFAULT'0000-00-00 00:00:00')ENGINE=InnoDB;

插入測(cè)試數(shù)據(jù):

yejr@imysql.com>insert intot1(id)select1;---不指定dt列的值yejr@imysql.com>insert into t1 select2,now();---指定dt列的值為now()yejr@imysql.com>insert intot1(id)select3;---不指定dt列的值

查詢(xún)數(shù)據(jù):

yejr@imysql.com>select*from t1 where dt is null;+------+---------------------+|id|dt|+------+---------------------+|1|0000-00-0000:00:00||3|0000-00-0000:00:00|+------+---------------------+2rows in set(0.00sec)

有沒(méi)有覺(jué)得很奇怪,為什么查到了2條 dt 列值為 '0000-00-00 00:00:00' 的記錄?

先查看執(zhí)行計(jì)劃:

yejr@imysql.com>desc select*from t1 where dt is null\G***************************1.row***************************id:1select_type:SIMPLE table:t2 partitions:NULLtype:ALLpossible_keys:NULLkey:NULLkey_len:NULLref:NULLrows:5filtered:20.00Extra:Using where1row in set,1warning(0.00sec)yejr@imysql.com>show warnings\G***************************1.row***************************Level:Note Code:1003Message:/* select#1 */select `yejr`.`t1`.`id` AS `id`,`yejr`.`t2`.`dt` AS `dt` from `yejr`.`t1` where(`yejr`.`t1`.`dt`='0000-00-00 00:00:00')

發(fā)現(xiàn)?IS NULL?條件被轉(zhuǎn)換了,所以才能查到結(jié)果,這是為什么呢? 我嘗試了調(diào)整SQL_MODE,發(fā)現(xiàn)并沒(méi)什么卵用,最后還是在官方文檔找到了答案:

For DATE and DATETIME columns that are declared as NOT NULL, you can find the special date '0000-00-00'?by using a statement like this:

SELECT*FROM tbl_name WHERE date_column ISNULL

This is needed to get some ODBC applications to work because ODBC does not support a '0000-00-00' date value.

See Obtaining Auto-Increment Values, and the description for the FLAG_AUTO_IS_NULL option at Connector/ODBC Connection Parameters.

原文發(fā)布時(shí)間為:2018-05-5

本文作者:葉師傅春茶開(kāi)售啦

本文來(lái)自云棲社區(qū)合作伙伴“老葉茶館”,了解相關(guān)信息可以關(guān)注“老葉茶館”。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 說(shuō)起我國(guó)最早的貨幣,大約是在夏商之際,海貝成了先祖?zhèn)冎谱髫泿诺氖走x,也成為了中國(guó)最早的錢(qián)幣,貝幣。商周時(shí)期貝類(lèi)的貨...
    古緣陳經(jīng)理閱讀 247評(píng)論 0 0
  • 有一種感覺(jué)總在沉默時(shí),才承認(rèn)是“相思”;有一種緣分總在夢(mèng)醒后,才相信是“永恒”;有一種心情總在離別后,才明白是“失落”。
    風(fēng)中月隱閱讀 382評(píng)論 0 0
  • 最近項(xiàng)目中有一個(gè)功能,注冊(cè)的時(shí)候需要驗(yàn)證郵箱,發(fā)送激活連接,激活之后才能登陸,在寫(xiě)的時(shí)候也是遇到了一些小阻礙,這里...
    sinnamm閱讀 1,409評(píng)論 0 2

友情鏈接更多精彩內(nèi)容