SQL更新字段CONCAT不起作用的字段中的所有值

这是我想要做的:

当前表格:

+----+-------------+ | id | data | +----+-------------+ | 1 | max | | 2 | linda | | 3 | sam | | 4 | henry | +----+-------------+ 

神秘查询(类似于"UPDATE table SET data = CONCAT(data, 'a')"

结果表:

 +----+-------------+ | id | data | +----+-------------+ | 1 | maxa | | 2 | lindaa | | 3 | sama | | 4 | henrya | +----+-------------+ 

而已! 我只需要在单个查询中完成,但似乎无法find方法。 我在bluehost上使用mySQL(我认为它的版本为4.1)

感谢大家。

这几乎是你所需要的:

 mysql> select * from t; +------+-------+ | id | data | +------+-------+ | 1 | max | | 2 | linda | | 3 | sam | | 4 | henry | +------+-------+ 4 rows in set (0.02 sec) mysql> update t set data=concat(data, 'a'); Query OK, 4 rows affected (0.01 sec) Rows matched: 4 Changed: 4 Warnings: 0 mysql> select * from t; +------+--------+ | id | data | +------+--------+ | 1 | maxa | | 2 | lindaa | | 3 | sama | | 4 | henrya | +------+--------+ 4 rows in set (0.00 sec) 

不知道为什么你会遇到麻烦,虽然我正在5.1.41testing这个

具有空值的CONCAT返回null,所以最简单的解决scheme是:

更新myTable设置备用= IFNULL(CONCAT(备用,“string”),“string”)

 UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1 

不为我工作。

spares默认是NULL ,但是它的varchar

解决了它。 结果列有一个有限的字符集,它会接受,改变它,现在查询工作正常。

通过将它包装在COALESCENULL值转换为空string

 "UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')" 

要么

改用CONCAT_WS :

 "UPDATE table SET data = CONCAT_WS(',',data, 'a')" 
 UPDATE myTable SET col = CONCAT( col , "string" ) 

无法解决。 请求语法是正确的,但在执行时“0行受到影响”。

解决scheme是:

 UPDATE myTable SET col = CONCAT( myTable.col , "string" ) 

那一个工作。

你可以这样做:

 Update myTable SET spares = (SELECT CASE WHEN spares IS NULL THEN '' ELSE spares END AS spares WHERE id = 1) + 'some text' WHERE id = 1 

字段为空时,field = field + value不起作用。