日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

mysql select null 0,查询值中为NULL,在MySQL中产生0.00

發(fā)布時間:2023/12/2 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql select null 0,查询值中为NULL,在MySQL中产生0.00 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我有一個動態(tài)編寫的查詢(通過Joomla的OO PHP)將一些值插入MySQL數(shù)據(jù)庫.用戶填寫的表單上有一個字段用于金額,如果它們留空,我希望進(jìn)入系統(tǒng)的值為NULL.我已經(jīng)將錯誤日志中的查詢寫出來了;這是查詢的樣子:

INSERT INTO arrc_Voucher

(VoucherNbr,securityCode,sequentialNumber, TypeFlag, CreateDT, ActivatedDT, BalanceInit, BalanceCurrent, clientName)

VALUES

('6032100199108006', '99108006','12','V','2010-10-29 12:50:01','NULL','NULL','NULL','')

但是,當(dāng)我查看數(shù)據(jù)庫表時,雖然ActivatedDT正確設(shè)置為NULL,但BalanceInit和BalanceCurrent都是0.00. ActivatedDT字段是日期時間,而另外兩個是十進(jìn)制(18,2),并且所有三個都在表結(jié)構(gòu)中設(shè)置為默認(rèn)值NULL.

如果我運行這樣的查詢:

UPDATE arrc_Voucher

SET BalanceInit = null

WHERE BalanceInit like "0%"

…它確實將值設(shè)置為null,那么為什么初始插入查詢不這樣做呢?是因為null在引號中嗎?如果是這樣,為什么ActivatedDT設(shè)置正確?

解決方法:

刪除NULL周圍的引號.實際發(fā)生的是它試圖將字符串’NULL’作為數(shù)字插入,并且因為它無法轉(zhuǎn)換為數(shù)字而使用默認(rèn)值0.

至于為什么ActivatedDT有效,我猜這是一個日期字段.未能字符串轉(zhuǎn)換成日期通常會導(dǎo)致其值設(shè)置為0(被格式化為像“1969-12-31”),但如果你已經(jīng)啟用了NO_ZERO_DATE模式,那么它將被設(shè)置為NULL而不是.

如果您想的MySQL拋出一個錯誤在這樣的情況下,當(dāng)無效值傳遞,您可以設(shè)置STRICT_ALL_TABLES或STRICT_TRANS_TABLES(請確保您了解它們之間的區(qū)別的部分)仿真模式中的一種,如TRADITIONAL或.

你可以用命令SET的sql_mode =“傳統(tǒng)”,或者在my.cnf中添加SQL模式=“傳統(tǒng)”的嘗試.

標(biāo)簽:mysql,sql,null

來源: https://codeday.me/bug/20190717/1483816.html

總結(jié)

以上是生活随笔為你收集整理的mysql select null 0,查询值中为NULL,在MySQL中产生0.00的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。