184

这是我想做的事情:

当前表:

+----+-------------+  
| 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      |  
+----+-------------+  

就是这样!我只需要在一个查询中完成它,但似乎找不到方法。我在 bluehost 上使用 mySQL(我认为它的版本是 4.1)

谢谢大家。

4

7 回答 7

301

这几乎就是您所需要的:

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.41 上测试这个

于 2010-11-08T21:46:14.840 回答
42

带有 null 值的 CONCAT 返回 null,因此最简单的解决方案是:

UPDATE myTable SET备件= IFNULL(CONCAT(备件,“字符串”),“字符串”)

于 2013-11-14T11:31:42.377 回答
14

通过将其包装在空字符串中来转换NULLCOALESCE

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

或者

改用CONCAT_WS

"UPDATE table SET data = CONCAT_WS(',',data, 'a')"
于 2015-11-04T10:02:13.070 回答
12
UPDATE 
    myTable
SET 
    col = CONCAT( col , "string" )

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

解决方案是:

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

那个有效。

于 2012-09-21T10:55:36.290 回答
11
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1

不为我工作。

备件是NULL默认的,但它的varchar

于 2012-09-23T10:12:14.433 回答
8

解决了。原来该列有一组有限的字符,它可以接受,更改它,现在查询工作正常。

于 2010-11-09T03:20:09.383 回答
2

你可以这样做:

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

当字段为空时,字段 = 字段 + 值不起作用。

于 2013-05-24T18:19:23.150 回答