說明:最近在寫後臺程序的時候,遇到了關於Oracle中NULL的一個問題: sql
測試數據 編程
表結構: 測試
表中已有的數據: spa
插入數據: code
INSERT INTO Z_TEST VALUES ('', '堅毅童');這是表中的數據爲:
當我想把'FSTUDENTNAME' 爲 '堅毅童'的記錄查出來: 字符串
SELECT T.*, T.ROWID FROM Z_TEST T WHERE T.FSTUDENTID = '';
但結果爲: class
查詢無記錄。 後臺
這時我就在想,我明明把這條數據的FSTUDENTID字段置爲'',可是卻查不出來。後來我想 ,Oracle是否是把這個空字符串編程了NULL。 程序
爲了驗證我想法的正確性,我測試了一下: im
SELECT DECODE(T.FSTUDENTID, NULL, 'NULL值', '空字符串') FROM Z_TEST T WHERE T.FSTUDENTNAME = '堅毅童';發現,個人猜測是正確的,原來Oracle把空字符串解析成了NULL。
我在程序中調用存儲過程,插入數據字段爲''空字符串,結果該字段就變成了NULL;
後來我爲了找問題的解釋,就在網上搜了不少的資料,下面就把這些資料整理一下。