MySQL查询中的Concat值(用于处理空值)

MySQL查询中的Concat值(用于处理空值),mysql,Mysql,我正在编写一个PHP和MySQL应用程序,其中我必须将多个列值连接到一个列中。我本来会使用concat()函数,但它不处理空值,而concat_ws()函数不会在我想要的输出中返回结果。 我所需要的可以在Oracle数据库中实现,如下所示: Select 'The Surname Is'||last_name from employees; 我的问题是如何在不使用上述函数的情况下使用MySQL实现相同的结果?用于压缩空字符串 select concat(coalesce(null, ''))

我正在编写一个PHP和MySQL应用程序,其中我必须将多个列值连接到一个列中。我本来会使用concat()函数,但它不处理空值,而concat_ws()函数不会在我想要的输出中返回结果。 我所需要的可以在Oracle数据库中实现,如下所示:

 Select 'The Surname Is'||last_name from employees;
我的问题是如何在不使用上述函数的情况下使用MySQL实现相同的结果?

用于压缩空字符串

select concat(coalesce(null, ''));
与:


您还可以使用CONCAT_WS函数来处理空值

SELECT 
CONCAT_WS(' ','The Surname Is',lastname) 
FROM `employees`

@Minesh:CONCAT_WS不“注意”空值。为了说明这一点

CONCAT_WS("~",house.name,house.address,house.type)

在上面的示例中,如果house.address为NULL,则返回的结果将不会像预期的那样包含整洁的双波浪号(~~)。这将是一个只有1个tilda的tilda分隔列表。例如“欢乐之家~豪宅”

一个小技巧:在CONCAT_WS中使用空字符串分隔符(有时不能插入空格)


它确实会将它连同它的分隔符一起移除,这其中的问题在哪里?这是一个简洁的解决方案,除非你想做些别的事情,否则我认为它是不好的,因为函数执行2个不同的任务,第二个任务不是由函数名提出的。首先它连接起来,很好,谢谢,这就是我想要的。然后它会删除空白字符串列表项,哇,我没让你这么做。该函数应称为CONCAT_NN_WS(),其中NN表示“Not Nulls”。如果我让我的软件仅仅将5个项目连接到一个列表中,我希望得到一个5个项目的列表。我不希望软件会说“哦,顺便说一句,我倒了垃圾箱,喂了猫,还打电话给你妈妈邀请她过周末”你说得对,这会很有用,应该已经实现了(保留这种方法也用于其他目的)。
CONCAT_WS("~",house.name,house.address,house.type)
CONCAT_WS('','The Surname Is:',lastname) 
FROM `employees`