CONCAT()不返回请求的字符串

时间:2015-11-17 20:55:54

标签: mysql sql

使用此查询,我希望返回包含三个字段的名称。我不明白为什么concat()函数没有返回表中所有请求的值。一些记录将被填补 - 让我们说1-2-3。结果应该是" 1 2 3"。如果3个记录是1-0-3而不是结果应该是" 1 3。"如果记录是1-2-0那么结果应该是" 1 2。"

三个请求的字段都是VARCHAR格式。

See my results here 第一个和第二个记录是错误的,第三个和第四个记录是对的,然后,有些是正确的,有些是错误的。

SELECT pt_rooms.room_id, pt_rooms.room_hotel_id ,
a_room_type.room_type_name, 
pt_rooms.room_title, a_room_type_suffix.room_type_suffix_name ,    
CONCAT(a_room_type.room_type_name,' ', pt_rooms.room_title,' ',   
a_room_type_suffix.room_type_suffix_name ) 
AS long_name FROM `pt_rooms` 
LEFT JOIN a_room_type_suffix ON   
a_room_type_suffix.room_type_suffix_id=pt_rooms.room_type_suffix_id 
JOIN a_room_type ON a_room_type.room_type_id=pt_rooms.room_type;

1 个答案:

答案 0 :(得分:3)

如果传递给它的任何值为NULL,则

CONCAT()将返回NULL

要解决此问题,您可以使用CONCAT_WS()

CONCAT_WS(' ', a_room_type.room_type_name, pt_rooms.room_title, a_room_type_suffix.room_type_suffix_name) AS long_name