MySQL中的字符串连接


149

我正在使用MySQL和MySQL Workbench 5.2 CE。当我尝试连接2列last_name和时first_name,它不起作用:

select first_name + last_name as "Name" from test.student

21
这个问题绝对表明没有研究工作。下次,在您在此处提出问题之前,请先搜索您的问题。
Mathias Lykkegaard Lorenzen 2013年

5
我不在乎没有任何研究工作,大声笑。stackoverflow成为我在Google中针对此类问题的热门话题,并且这是众包答案的地方:)
hamish

Answers:


271

MySQL与大多数DBMS使用+||进行连接不同。它使用以下CONCAT功能:

SELECT CONCAT(first_name, " ", last_name) AS Name FROM test.student

正如@eggyal在注释中指出的那样,您可以||通过设置PIPES_AS_CONCATSQL模式在MySQL中启用与运算符的字符串连接。


7
更好的答案是,MySQL不使用串联运算符。
DonBecker 2013年

28
请注意,这并非完全正确:启用S​​QL模式时,MySQL 确实支持||字符串连接PIPES_AS_CONCAT
eggyal 2014年

1
对于那些使用的人Doctrine,我不得不在中使用单引号作为空格CONCAT,并在整个查询中使用双引号。
伸长了脖子

3
设置PIPES_AS_CONCATSET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');。取消设置:SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');mariadb.com/kb/zh-CN/library/sql-mode/#examples中的
mivk

27

尝试:

select concat(first_name,last_name) as "Name" from test.student

或更好:

select concat(first_name," ",last_name) as "Name" from test.student


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.