update語句除數(shù)后保存為零如何解決
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
![]() ![]() 你這條SQL語句的執(zhí)行結(jié)果為0,原因很可能是因?yàn)閿?shù)據(jù)類型和計(jì)算順序的問題。具體分析如下: 你的SQL片段是: sql update scm_take_stock_order_report set take_stock_width = " + take_stock_width + "/1000 這里 take_stock_width=80,這樣語句實(shí)際變成: sql update scm_take_stock_order_report set take_stock_width = 80/1000 在SQL中,除法運(yùn)算的結(jié)果類型依賴于操作數(shù)的數(shù)據(jù)類型。如果 take_stock_width 列的數(shù)據(jù)類型是整數(shù)類型(比如INT),那么 80/1000 會(huì)被當(dāng)作整數(shù)除法處理,結(jié)果為0(因?yàn)?0除以1000的整數(shù)部分是0),存入字段中就變成0。 解決方法: 確保除法運(yùn)算是浮點(diǎn)數(shù)運(yùn)算,可以把除數(shù)或被除數(shù)轉(zhuǎn)成小數(shù),如 80/1000.0 或 CAST(80 AS DECIMAL)/1000。 或者修改字段類型為能存儲(chǔ)小數(shù)的類型,如 DECIMAL、FLOAT等。 舉個(gè)例子,修改語句如下: sql update scm_take_stock_order_report set take_stock_width = 80 / 1000.0 或者 sql update scm_take_stock_order_report set take_stock_width = CAST(80 AS DECIMAL) / 1000 這樣,結(jié)果會(huì)是0.08,而不是0。 該文章在 2025/6/28 14:32:11 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |