【发布时间】:2011-07-03 08:30:28
【问题描述】:
更新配置文件集 favourties=CONCAT(favourties,"123") WHERE id=1
我想在 favourties 中附加 123,但如果 favourties 的默认值设置为 NULL,则此查询将不起作用。如果 favourties 设置为 NULL 然后附加 123 会查询什么
【问题讨论】:
标签: mysql concatenation
更新配置文件集 favourties=CONCAT(favourties,"123") WHERE id=1
我想在 favourties 中附加 123,但如果 favourties 的默认值设置为 NULL,则此查询将不起作用。如果 favourties 设置为 NULL 然后附加 123 会查询什么
【问题讨论】:
标签: mysql concatenation
UPDATE profile SET favourties=CONCAT(IFNULL(favourties, ''),"123") WHERE id=1
【讨论】:
使用COALESCE 函数环绕字段:
UPDATE profile
SET favourties = CONCAT(COALESCE(favourties, ''),"123")
WHERE id=1
【讨论】:
您可能无法将某些内容连接到 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
【讨论】:
您还可以使用 CONCAT_WS() (docs) 来处理您所期望的 NULL:将它们转换为空字符串:
UPDATE profile SET favourties = CONCAT_WS('', favourties, "123") WHERE id = 1;
我个人现在实际上只使用CONCAT_WS(),因为不得不担心 NULL 让我烦恼。我很少使用 NULL,所以我不必担心它,只是以防万一。当它似乎没有意义时,弄清楚为什么你最终得到一个空字符串只是一件烦人的事情。
【讨论】:
在 PHP 中,我使用:
SET `trans`=concat('$var', trans)
添加到trans 列中的字符串。
如果在括号内不使用反引号 group ,它将无法在名为 group 的列上工作,而对于 trans,则不需要反引号。
【讨论】: