我正在编写一个PHP和MySQL应用程序,其中我必须将多个列值连接成一个单独的列。我会使用concat()函数,但它不处理空值,而concat_ws(),不会在我想要的输出中返回结果。 我需要的东西可以在Oracle数据库中实现,如下所示:
Select 'The Surname Is'||last_name from employees;
我的问题是如何使用MySQL来实现相同的结果...而不使用上面提到的函数?
答案 0 :(得分:27)
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`