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

时间:2011-12-16 06:35:52

标签: mysql

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

 Select 'The Surname Is'||last_name from employees;

我的问题是如何使用MySQL来实现相同的结果...而不使用上面提到的函数?

5 个答案:

答案 0 :(得分:27)

CONCATIFNULL

SELECT
  CONCAT('The Surname Is ', IFNULL(last_name, 'sadly not available'))
FROM `employees`

答案 1 :(得分:10)

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

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

答案 2 :(得分:8)

@Minesh:CONCAT_WS不会“关注”NULL值。为了说明这一点......

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

在上面的示例中,如果 house.address NULL ,则返回的结果将不包含预期的整齐双tilda(~~)。它将是一个只有1个tilda的tilda分隔列表。例如“有趣的房子〜豪宅”

答案 3 :(得分:2)

使用coalesce连接空字符串

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

答案 4 :(得分:0)

一个小技巧:使用CONCAT_WS之类的空字符串(有时你不会插入空格)

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