如何在MySQL中将字符串附加到现有字段?

149

我想将所有记录的代码更新为它们当前的值加上_standard,有什么建议吗?

例如,如果代码是apple_1和apple_2,我需要它们变成apple_1_standard和apple_2_standard。

之前:

id   code
------------
1    apple_1 
1    apple_2

伪查询:

update categories set code = code + "_standard" where id = 1;

期望的结果:

id   code
----------------------
1    apple_1_standard 
1    apple_2_standard

2
将数据追加到已经存在数据的MySQL数据库字段中 - qdinar
2个回答

308

在MySQL中进行字符串拼接需要使用CONCAT()函数:

UPDATE categories SET code = CONCAT(code, '_standard') WHERE id = 1;

84
万一有人遇到与我相同的问题:如果字段“code”默认为NULL,则需要使用以下内容:UPDATE categories SET code = CONCAT(IFNULL(code,''), '_standard') WHERE id = 1;,否则连接操作将始终生成NULL。 - Avatar
4
您可以使用CONCAT_WS函数来跳过NULL值。例如,SELECT CONCAT_WS(',','名字',NULL,'姓氏');将返回“名字,姓氏”。 - BarneySchmale
1
@Daniel 根据上面的评论更新答案怎么样? - kiedysktos
1
针对可能为空的情况的特殊/单独问题:https://dev59.com/A2Yr5IYBdhLWcg3wAFvE - qdinar

15

更新图片字段以添加完整的URL,忽略空字段:

UPDATE test SET image = CONCAT('https://my-site.com/images/',image) WHERE image IS NOT NULL;

7
有趣的是,尽管这并没有很好地回答提问者的问题,但这正是我所需要的。 - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接