为什么CONCAT不第一次在mySQL表中插入文本?

时间:2019-01-01 18:17:56

标签: mysql sql sql-update

我正在使用UPDATE将简单文本插入到字段为MEDIUMTEXT(可空字段)的表中。 奇怪的是,当字段最初为空时,它不起作用。如果我手动输入至少一个字符/空格,则可以正常工作。

我想将新文本附加到字段中的现有文本中。

UPDATE pen SET  
                PEN_STATUS = @PenStat,
                PEN_STATUS_CHANGE_REASON = CONCAT(PEN_STATUS_CHANGE_REASON,'\n',ChangeDate,':',EmployeeID,':',ChangeReason)
            WHERE PEN_ID = PenID;

这是为什么?

2 个答案:

答案 0 :(得分:5)

[[0 1 0 1] [1 0 1 0] [0 1 0 1] [1 0 1 0]]` 不处理CONCAT值。如the MySQL manual中所述:

  

NULL如果任何参数为NULL,则返回NULL。

您想使用CONCAT()处理该用例,例如:

COALESCE

答案 1 :(得分:2)

大概是因为某物是NULL。尝试改用CONCAT_WS()

UPDATE pen
    SET PEN_STATUS = @PenStat,
        PEN_STATUS_CHANGE_REASON = CONCAT_WS('\n',
                                             PEN_STATUS_CHANGE_REASON,
                                             CONCAT_WS(':', ChangeDate, EmployeeID, ChangeReason
                                                     )
                                            )
    WHERE PEN_ID = PenID;

CONCAT_WS()忽略NULL自变量。另外,分隔符只需要列出一次。