使用此查询,我希望返回包含三个字段的名称。我不明白为什么concat()
函数没有返回表中所有请求的值。一些记录将被填补 - 让我们说1-2-3。结果应该是" 1 2 3"。如果3个记录是1-0-3而不是结果应该是" 1 3。"如果记录是1-2-0那么结果应该是" 1 2。"
三个请求的字段都是VARCHAR格式。
第一个和第二个记录是错误的,第三个和第四个记录是对的,然后,有些是正确的,有些是错误的。
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;
答案 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