SQL-如何用varchar类型连接两列?

时间:2019-05-06 15:33:30

标签: sql

下面的SQL代码应该返回姓和名的串联字符串,但始终返回0。有谁知道为什么(PS我是编程的完整NEWB)?

我的代码中的所有其他内容都已经过测试,并且一切正常,但是由于某些原因,两个varchar不想返回字符串。另外,我尝试将同一数据集中的memid +邮政编码串联起来,效果很好,所以我相信它与数据类型有关

SELECT f.name, 
CONCAT( m.firstname +  " " + m.surname ) AS mem_name
FROM  `Bookings` b
JOIN  `Members` m ON m.memid = b.memid
JOIN  `Facilities` f ON b.facid = f.facid
WHERE f.name LIKE  '%Tennis%'
LIMIT 0 , 30

它返回以下内容:

name            mem_name
Table Tennis    0
Tennis Court 1  0
Tennis Court 1  0
Tennis Court 2  0
Table Tennis    0
Table Tennis    0
Tennis Court 1  0
Tennis Court 1  0
Tennis Court 1  0

这是两种数据类型:

surname     varchar(17) utf8_general_ci     
firstname   varchar(9)  utf8_general_ci 

这是“成员”表的外观

memid  surname  firstname  address                      zipcode  
1      Smith    Darren     8 Bloomsbury Close, Boston   4321
2      Smith    Tracy      8 Bloomsbury Close, New York 4321
3      Rownam   Tim        23 Highway Way, Boston       23423
4      Joplette Janice     20 Crossing Road, New York   234

2 个答案:

答案 0 :(得分:2)

您不必使用+运算符。试试这个:

SELECT 
    f.name, 
    CONCAT( m.firstname, " ", m.surname ) AS mem_name
FROM  `Bookings` b
JOIN  `Members` m ON m.memid = b.memid
JOIN  `Facilities` f ON b.facid = f.facid
WHERE f.name LIKE  '%Tennis%'
LIMIT 0, 30

答案 1 :(得分:1)

有时,concat函数不使用多个参数。尝试嵌套要连接的列。另外,使用FALSE代替加号。

,

检查是否可行。