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

PCG*_*PCG 0 mysql sql sql-update

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

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

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

为什么是这样?

GMB*_*GMB 5

CONCAT不处理NULL价值观.正如MySQL手册中所解释的那样:

CONCAT() 如果任何参数为NULL,则返回NULL.

您想用来COALESCE处理该用例,例如:

UPDATE pen SET  
    PEN_STATUS = @PenStat,
    PEN_STATUS_CHANGE_REASON = CONCAT(
        COALESCE(PEN_STATUS_CHANGE_REASON, ''),
        '\n', 
        ChangeDate,
        ':',
        EmployeeID,
        ':',
        ChangeReason
    )
WHERE PEN_ID = PenID;
Run Code Online (Sandbox Code Playgroud)