在 IFNULL 中连接

Concat inside IFNULL

我有一个声明

SELECT CONCAT(lastName, ' ', firstName, '', IFNULL(middleName, ''))

效果很好,无论是否有中间名,它都会给我所有的名字。我的问题是,如果可能的话,我不想在没有中间名的记录的名字后包含空的 space。如何在有中间名的情况下只在名字后面加space?

SELECT CONCAT(lastName, ' ', firstName, if(middleName IS NULL,'',' '), IFNULL(middleName, ''))

SELECT CONCAT(lastName, ' ', firstName, IFNULL(concat(' ', middleName), ''))

您需要的是:

SELECT CONCAT(lastName, ' ', firstName, 
               IF(middleName is null, '', concat(' ', middleName)))

更简单的方法是:

SELECT TRIM(CONCAT(lastName, ' ', firstName, ' ', IFNULL(middleName, ' ')))

使用IF:

SELECT CONCAT(lastName, ' ', firstName, 
    IF(middleName IS NOT NULL, CONCAT(' ',middleName), ''))