MYSQL Concat不起作用。

4

更新个人资料 SET favourties=CONCAT(IFNULL(favourties,''),'123') WHERE id=1

我想在favourties中添加123,但如果favourties的默认值设置为NULL,则此查询将无法正常工作。如果favourties设置为NULL,然后再附加123,那么查询语句将是什么?

5个回答

9
UPDATE profile SET favourties=CONCAT(IFNULL(favourties, ''),"123") WHERE id=1

5
将字段用COALESCE函数包装起来:
UPDATE profile
SET favourties = CONCAT(COALESCE(favourties, ''),"123")
WHERE id=1

3
您可能无法将任何内容连接到NULL。也许您可以使用coalesce函数?
UPDATE profile SET favourties=CONCAT(COALESCE(favourites,""),"123") WHERE id=1

请参考:http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce。你可以像 @zerkms 所说的那样使用 ifnull,但这不符合 SQL 标准。虽然它略微快一点,但请在此链接中了解更多信息:http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/performance-isnull-vs-coalesce.aspx

2

您还可以使用 CONCAT_WS()文档)来处理 NULL,它会将其转换为空字符串:

UPDATE profile SET favourties = CONCAT_WS('', favourties, "123") WHERE id = 1;

我个人现在只使用CONCAT_WS(),因为担心NULL值会让我烦恼。我很少使用NULL值,所以不必担心,但以防万一。当你发现自己得到了一个空字符串,而这似乎没有道理时,解决这个问题只是一件烦人的事情。


0

在 PHP 中,我使用:

SET `trans`=concat('$var', trans)

在已经存在于trans列中的字符串上添加。 如果不在括号内使用反引号group,则无法在名为group的列上工作,而对于trans,则不需要使用反引号。


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