2012-07-19 13 views
0

這裏是我有什麼,要添加的兩列可默認爲NULL:如何編寫更新查詢將列設置爲類型爲varchar的另外兩列的總和?

UPDATE house SET TOTALTAX=IFNULL(MUNTAX,0)+IFNULL(SCHTAX,0) WHERE NNS_NO=542 

這給我的影響0行。我覈實了NNS號碼是正確的,我不知道接下來要做什麼。

好吧,我發現列MUNTAX和SCHTAX是類型varchar而不是整數。例如,在這種情況下,MUNTAX =「$ 7,725.00」,SCHTAX = NULL。
所以現在的問題是如何在計算總和並將其更新爲varchar(TOTALTAX也是varchar)之前,如何僅提取美元值作爲整數?我需要存儲過程嗎?

+1

你能顯示'SELECT * FROM house WHERE NNS_NO = 542'和'SHOW CREATE TABLE house'的輸出嗎?如果您在運行這些查詢之前對其中任一查詢進行了任何修改,那麼還請準確顯示您使用的查詢。 – 2012-07-19 12:18:26

回答

0

編輯:啊我看你還想把結果變回VARCHAR。使用CONCAT()將$符號添加回前面應該很容易,但如果不編寫自定義函數,則添加逗號會很棘手。我可能不需要告訴你,但將這樣的值存儲爲數據庫中的VARCHARs不是一個好主意。

這不是很漂亮,但是像這樣?

mysql> SELECT * FROM sum2; 
+--------+--------+-------+ 
| a  | b  | total | 
+--------+--------+-------+ 
| $1,000 | $2,000 | NULL | 
| $1,500 | NULL | NULL | 
+--------+--------+-------+ 
2 rows in set (0.02 sec) 

mysql> UPDATE sum2 SET total= IFNULL(REPLACE(REPLACE(a, '$', ''), ',', ''), 0) + IFNULL((REPLACE(REPLACE(b, '$', ''), ',', '')), 0); 
Query OK, 2 row affected (0.02 sec) 
Rows matched: 2 Changed: 2 Warnings: 0 

mysql> SELECT * FROM sum2; 
+--------+--------+-------+ 
| a  | b  | total | 
+--------+--------+-------+ 
| $1,000 | $2,000 | 3000 | 
| $1,500 | NULL | 1500 | 
+--------+--------+-------+ 
2 rows in set (0.02 sec) 
+0

我編輯的細節,請刷新問題 - 我基本上有一個問題,從var char轉換爲整數,消除$符號這樣做;然後得到總和;然後將整數和作爲$ x,xxx轉換回varchar並更新TOTALTAX列。 – 2012-07-19 12:38:41

0

請嘗試以下查詢以檢查記錄是否正確更新。 如果已更新它們,則您的查詢將顯示0行受到影響。

SELECT TOTALTAX, MUNTAX, SCHTAX FROM house WHERE NNS_NO=542 
相關問題