字符串 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      |
+----+-------------+

够了!我只需要在一个简单的查询中完成它,但似乎找不到一种方法。我正在蓝主机上使用 mySQL (我想是4.1版本)

谢谢大家。

402651 次浏览

这就是你所需要的:

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

解决了。结果表明,该列只能接受有限的字符集,因此对其进行了更改,现在查询工作正常。

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

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

解决办法是:

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

这招奏效了。

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

不为我工作。

备件默认为 NULL,但它的 varchar

你可以这样做:

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 在 field 为 null 时不起作用。

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

更新 myTable SET spares = IFNULL (CONCAT (spares,“ string”) ,“ string”)

用空字符串转换 NULL值,方法是将其包装在 COALESCE

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

或者

改为使用 CONCAT _ WS:

"UPDATE table SET data = CONCAT_WS(',',data, 'a')"