这是我想要做的:
当前表:
+----+-------------+
| 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)
谢谢大家。
答案 0 :(得分:222)
这几乎是你所需要的:
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
上测试了这个答案 1 :(得分:31)
具有null值的CONCAT返回null,因此最简单的解决方案是:
UPDATE myTable SET spares = IFNULL(CONCAT(备用,“字符串”),“字符串”)
答案 2 :(得分:10)
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1
不适合我。
备件默认为NULL
,但varchar
答案 3 :(得分:7)
解决了它。事实证明,该列有一组有限的字符可以接受,更改它,现在查询工作正常。
答案 4 :(得分:6)
将NULL
值用空字符串转换为COALESCE
"UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"
OR
改为使用CONCAT_WS:
"UPDATE table SET data = CONCAT_WS(',',data, 'a')"
答案 5 :(得分:4)
UPDATE
myTable
SET
col = CONCAT( col , "string" )
无法解决问题。请求语法是正确的,但执行时“0行受影响”。
解决方案是:
UPDATE
myTable
SET
col = CONCAT( myTable.col , "string" )
那个人工作了。
答案 6 :(得分:1)
你可以这样做:
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不起作用。