下面的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
答案 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
代替加号。
,
检查是否可行。