Mysql 如何编写更新查询,将一列设置为其他两列(类型为varchar)的总和?

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(

以下是我所拥有的,要添加的两列在默认情况下可以为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(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列。