MYSQL Concat无法正常工作

时间:2011-02-24 07:02:56

标签: mysql concatenation

  

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

我想在favourties中添加123,但如果favourties的默认值设置为NULL,则此查询将不起作用。如果favourties设置为NULL然后用它附加123

,将会查询什么

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:5)

使用COALESCE功能包裹字段:

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

答案 2 :(得分: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

答案 3 :(得分:2)

您也可以使用CONCAT_WS()docs)处理NULL,如您所愿:将它们转换为空字符串:

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

我个人实际上现在只使用CONCAT_WS(),因为不得不担心NULL会让我烦恼。我很少使用NULL,所以我不必担心它,但只是因为它。这只是一个令人烦恼的事情,弄清楚为什么你最后得到一个空字符串,当它似乎没有意义。

答案 4 :(得分:0)

在PHP中,我使用:

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

添加到trans列中已有的字符串。 它不会在名为group的列上工作,也不会在括号内使用反向标记group,而使用反向,则不需要返回标记。