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
解决了它。 结果列有一个有限的字符集,它会接受,改变它,现在查询工作正常。
通过将它包装在COALESCE
将NULL
值转换为空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不起作用。