Mysql 如何编写更新查询,将一列设置为其他两列(类型为varchar)的总和?
以下是我所拥有的,要添加的两列在默认情况下可以为NULL:Mysql 如何编写更新查询,将一列设置为其他两列(类型为varchar)的总和?,mysql,Mysql,以下是我所拥有的,要添加的两列在默认情况下可以为NULL: UPDATE house SET TOTALTAX=IFNULL(MUNTAX,0)+IFNULL(SCHTAX,0) WHERE NNS_NO=542 这使我有0行受影响。我验证了NNS号码是正确的,我真的不知道下一步该怎么做 好的,我发现MUNTAX和SCHTAX列是varchar类型,而不是整数。例如,在本例中,MUNTAX=“$7725.00”,SCHTAX=NULL。 所以现在的问题是,在计算总和并将其更新为varchar(
UPDATE house SET TOTALTAX=IFNULL(MUNTAX,0)+IFNULL(SCHTAX,0) WHERE NNS_NO=542
这使我有0行受影响。我验证了NNS号码是正确的,我真的不知道下一步该怎么做
好的,我发现MUNTAX和SCHTAX列是varchar类型,而不是整数。例如,在本例中,MUNTAX=“$7725.00”,SCHTAX=NULL。所以现在的问题是,在计算总和并将其更新为varchar(TOTALTAX也是varchar)之前,如何将美元值提取为整数?是否需要存储过程?请尝试以下查询,以检查记录是否正确更新。 如果其已更新,则您的查询将显示受影响的0行
SELECT TOTALTAX, MUNTAX, SCHTAX FROM house WHERE NNS_NO=542
编辑:啊,我知道你还想把结果转换回VARCHAR。使用CONCAT()将$sign添加回前面应该很容易,但是如果不编写自定义函数,将逗号添加回前面可能会很棘手。我可能不需要告诉您,但是将这样的值作为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)
您能否显示NNS_NO=542的
SELECT*FROM house和show CREATE TABLE house的输出?如果您在运行这些查询之前对其中任何一个查询进行了任何修改,那么也请准确显示您使用的查询。我编辑了详细信息,请刷新问题-我基本上在将COL从var char转换为integer时遇到了一个问题,这样做就省去了$sign;然后求和;然后将整数和转换回varchar为$x,xxx,并更新TOTALTAX列。