我在sqlyog
写了一个存储过程。除了 concat 语句之外,它很长并且执行所有所需的功能,因此我只列出该特定查询。
UPDATE recipes_new
SET co_auths = CONCAT(co_auths,',',c1id)
WHERE id = name_in;
我基本上想要在两个字段中进行分离,并且此语句放在游标中,因此它是迭代的。 co_auths
目前为空,因此我将结果显示为,1,2,3 ,因为我希望它是 1,2,3 。任何猜测最合适的解决方案是什么?
答案 0 :(得分:5)
使用IF
:
UPDATE recipes_new
SET co_auths = IF(co_auths IS NULL, c1id, CONCAT(co_auths, ',', c1id))
WHERE id = name_in;
如果co_auths
的值是空字符串而不是NULL
:
UPDATE recipes_new
SET co_auths = IF(LENGTH(co_auths), CONCAT(co_auths, ',', c1id), c1id)
WHERE id = name_in;
答案 1 :(得分:1)
这应该可以使用CASE
检查它是否为NULL:
CONCAT(
CASE
WHEN IFNULL(co_auths,'') = ''
THEN ''
ELSE CONCAT(co_auths, ',')
END, c1id)
答案 2 :(得分:1)
MySQL returning an empty field: CONCAT(nonEmpty1,empty2,nonEmpty3) = NULL 你正在寻找CONCAT_WS
UPDATE recipes_new SET co_auths = CONCAT_WS(co_auths,',',c1id) WHERE id = name_in;