使用concat时,请获取额外的逗号','

时间:2013-02-22 14:30:18

标签: mysql

我在sqlyog写了一个存储过程。除了 concat 语句之外,它很长并且执行所有所需的功能,因此我只列出该特定查询。

UPDATE recipes_new 
SET co_auths = CONCAT(co_auths,',',c1id) 
WHERE id = name_in; 

我基本上想要在两个字段中进行分离,并且此语句放在游标中,因此它是迭代的。 co_auths目前为空,因此我将结果显示为,1,2,3 ,因为我希望它是 1,2,3 。任何猜测最合适的解决方案是什么?

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;