SELECT NULL;
打印與null,null相比,爲什麼不是零日期?<空>
SELECT CAST('0000-00-00' AS DATE);
打印<空>
個
SELECT NULL IS NULL;
打印SELECT CAST('0000-00-00' AS DATE) IS NULL;
打印
爲什麼是不是第四條語句1
的結果?
在Windows上連接到MySQL 5.7.17時,使用DataGrip進行了測試。
SELECT NULL;
打印與null,null相比,爲什麼不是零日期?
<空>
SELECT CAST('0000-00-00' AS DATE);
打印
<空>
SELECT NULL IS NULL;
打印
SELECT CAST('0000-00-00' AS DATE) IS NULL;
打印
爲什麼是不是第四條語句1
的結果?
在Windows上連接到MySQL 5.7.17時,使用DataGrip進行了測試。
感謝kiks73,iamsankalp89和moscas爲他們的答案(kiks73's answer - iamsankalp89's answer - moscas's answer),它幫我找到了奇怪的問題的解決方案/解釋,我遇到了。
奇怪行爲的原因是DataGrip使用的JDBC驅動程序將如何處理零日期。
它會從數據庫接收日期爲零,然後將其轉換爲空。
這將導致DataGrip閱讀零個日期爲因爲JDBC轉換的空值。
Howevenr,因爲其在JDBC層(未在數據庫層)完成的數據庫不看到這些值作爲零點。
爲了測試這個,我運行了數據庫連接和通過mysql shell查詢,這將打印零而不是空值。
更新的問題 – naaz
在mysql中只有null爲null。其他一切都不是,所以它返回1 – iamsankalp89
,但根據陳述2(在我的測試中),左側評估爲空, – naaz
測試在Ubuntu的MySQL:
SELECT CAST('0000-00-00' AS DATE) ;
上述查詢的值爲空,
mysql> SELECT CAST('0000-00-00' AS DATE);
+----------------------------+
| CAST('0000-00-00' AS DATE) |
+----------------------------+
| NULL |
+----------------------------+
1 row in set, 1 warning (0.00 sec)
SELECT CAST('0000-00-00' AS DATE) IS NULL;
在上面的查詢中,您要檢查值爲null使用IS NULL功能,答案是真所以只有它的顯示值爲1
mysql> SELECT CAST('0000-00-00' AS DATE) IS NULL;
+------------------------------------+
| CAST('0000-00-00' AS DATE) IS NULL |
+------------------------------------+
| 1 |
+------------------------------------+
1 row in set, 1 warning (0.00 sec)
當使用其他人測試時,
SELECT CAST('0000-00-00' AS DATE) ;
上述查詢的值wo不顯示爲NULL,
SELECT CAST('0000-00-00' AS DATE) IS NULL;
上述查詢的結果是假,因此,只有它顯示爲
當我嘗試第二個語句,它打印'0000-00 -00',而不是''? –
waka