2011-02-24 39 views
4

UPDATE轮廓SET favourties = CONCAT(favourties, “123”) WHERE ID = 1MYSQL的毗连不工作

我想追加123 favourties但如果favourties的缺省值被设定为NULL,那么这个查询将不起作用。会有什么查询,如果favourties设置为NULL,然后用COALESCE功能追加123与它

回答

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

包裹场周围:

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

你可能不能连接的东西为NULL。也许你可以使用​​3210?

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

您可以使用ifnull像@zerkms说,但不是在SQL标准。尽管如此,速度还是有点小。阅读起来就可以在此链接:http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/performance-isnull-vs-coalesce.aspx

2

您还可以使用CONCAT_WS()docs),其与空值你所期望的交易:将它们转换为空字符串:

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

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

0

在PHP中,我使用:

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

添加到字符串已经在trans列。 它不会在名为group的列上工作,也不会在括号内使用返回勾号group,而使用trans时,不需要back tick。