SQL UPDATE字段中的所有值,附加字符串CONCAT不起作用

Fre*_*all 146 mysql sql concat concatenation

这是我想要做的:

当前表:

+----+-------------+  
| id | data        |  
+----+-------------+  
|  1 | max         |  
|  2 | linda       |  
|  3 | sam         |  
|  4 | henry       |  
+----+-------------+  
Run Code Online (Sandbox Code Playgroud)

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

结果表:

+----+-------------+  
| id | data        |  
+----+-------------+  
|  1 | maxa        |  
|  2 | lindaa      |  
|  3 | sama        |  
|  4 | henrya      |  
+----+-------------+  
Run Code Online (Sandbox Code Playgroud)

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

感谢大家.

Mar*_*c B 240

这几乎是你所需要的:

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)
Run Code Online (Sandbox Code Playgroud)

不知道你为什么遇到麻烦,虽然我在5.1.41上测试了这个

  • 解决了它.事实证明,该列有一组有限的字符可以接受,更改它,现在查询工作正常. (10认同)
  • 这是一个很好的答案,但有点令人困惑,因为在我的服务器上“数据”是一个关键字。也许一个不太模糊的例子是:“UPDATE table SET column_name=concat(column_name, 'string');” (2认同)

and*_*ejc 34

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

UPDATE myTable SET备用= IFNULL(CONCAT(备用,"字符串"),"字符串")


DS_*_*per 10

UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1
Run Code Online (Sandbox Code Playgroud)

不适合我.

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

  • 看来,如果默认值为NULL,它就不起作用.它必须是一个空字符串 (5认同)

Fre*_*all 7

解决了它.事实证明,该列有一组有限的字符可以接受,更改它,现在查询工作正常.


Roh*_*ude 7

通过将NULL值包装在空中来转换值COALESCE

"UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"
Run Code Online (Sandbox Code Playgroud)

要么

请改用CONCAT_WS:

"UPDATE table SET data = CONCAT_WS(',',data, 'a')"
Run Code Online (Sandbox Code Playgroud)


Jer*_*lle 6

UPDATE 
    myTable
SET 
    col = CONCAT( col , "string" )
Run Code Online (Sandbox Code Playgroud)

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

解决方案是:

UPDATE 
    myTable 
SET 
    col = CONCAT( myTable.col , "string" )
Run Code Online (Sandbox Code Playgroud)

那工作。