[SQL] SQL NULL = NULL ?

  • 6551
  • 0
  • 2011-11-11

SQL NULL = NULL ?

為何查詢句用WHERE Fieldname=null查不到我要的資料呢?

前陣子看到有人問到為什麼在SQL TABLE裡明明看到值顯示的是NULL

為何查詢句用WHERE Fieldname=null查不到我要的資料呢?

 

這就要先說明什麼是NULL ,NULL你必須把它想成就是不知道它是什麼,換句說它可能什麼都是

,所以如果這定義的話,那麼你當然不能用  欄架A=NULL  來查你想要的資料,因為欄架A裡存的NULL不能確定是你條件給的NULL

,很鐃舌吧,說白話一點就是你都不知道它是什麼了,你如何去認定它會相等?不信?

 

可以試試下列語法

SELECT CASE WHEN NULL=NULL THEN 'TRUE' ELSE 'FALSE' END

SELECT CASE WHEN NULL IS NULL THEN 'TRUE' ELSE 'FALSE' END

SELECT CASE WHEN NULL='' THEN 'TRUE' ELSE 'FALSE' END

 

由於NULL的特性,在SQL裡有了 IS NULL 、IS NOT NUL、ISNULL(aa,bb) 這樣的話法

所以下次千萬別再用 =NULL 來判斷值為NULL的資料囉

請記得要用 WHERE 欄位A IS NULL

 

若本文對您有所幫助,歡迎轉貼,但請在加註【轉貼】及來源出處,並在附上本篇的超連結,感恩您的配合囉。

By No.18