我有一個查詢是動態編寫的(OO PHP通過Joomla)將一些值插入MySQL數據庫。用戶填寫的表單上有一個字段,如果他們留下空白,我希望進入系統的值爲NULL。我已經將錯誤日誌中的查詢寫出來,這是查詢的樣子:在MySQL中導致0.00的查詢值爲NULL
INSERT INTO arrc_Voucher
(VoucherNbr,securityCode,sequentialNumber, TypeFlag, CreateDT, ActivatedDT, BalanceInit, BalanceCurrent, clientName)
VALUES
('0199108006', '99108006','12','V','2010-10-29 12:50:01','NULL','NULL','NULL','')
當我看到在數據庫表,不過,雖然ActivatedDT正確設置爲NULL,BalanceInit和BalanceCurrent均爲0.00。 ActivatedDT字段是日期時間,而另外兩個是十進制(18,2),並且所有三個都在表結構中設置爲默認值NULL。
如果我運行這樣的查詢:
UPDATE arrc_Voucher
SET BalanceInit = null
WHERE BalanceInit like "0%"
...它設置爲null值,那麼爲什麼不在初始插件查詢這樣做?是因爲null是用引號引起來的嗎?如果是這樣,爲什麼它爲ActivatedDT正確設置?
謝謝!我想這是報價,但不明白爲什麼它與日期字段,而不是其他人。 – EmmyS 2010-10-29 19:11:15
在一個理智的數據庫中,你會得到一個類似「無法將字符串插入整數字段」的錯誤,但MySQL試圖猜測你可能意味着什麼,而不是給出錯誤。 – rjmunro 2012-12-11 15:50:07
@rjmunro MySQL也支持嚴格模式,我已將這些信息添加到我的答案中。 – 2012-12-12 17:56:09