更新个人资料SET favourties = CONCAT(favourties, “123”) WHERE id = 1
我想在favourties中添加123,但如果favourties的默认值设置为NULL,则此查询将不起作用。如果favourties设置为NULL然后用它附加123
,将会查询什么答案 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
,而使用反向,则不需要返回标记。