0

这是我所拥有的,要添加的两列默认情况下可以为 NULL:

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)之前将美元值提取为整数?我需要存储过程吗?

4

2 回答 2

0

尝试以下查询以检查记录是否正确更新。如果它已经更新,您的查询将显示受影响的 0 行。

SELECT  TOTALTAX, MUNTAX, SCHTAX FROM house WHERE NNS_NO=542
于 2012-07-19T12:19:44.693 回答
0

编辑:啊,我看到您还想将结果转换回 VARCHAR。使用 CONCAT() 将 $ 符号添加回前面应该很容易,但是如果不编写自定义函数,将逗号重新添加会很棘手。我可能不需要告诉你,但是将像这样的值作为 VARCHAR 存储在数据库中并不是一个好主意。

它不漂亮,但像这样?

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)
于 2012-07-19T12:27:58.170 回答