MySQL中的字符串拼接

243

我正在使用MySQL和MySQL Workbench 5.2 CE。当我尝试将两列last_namefirst_name连接起来时,它不起作用:

select first_name + last_name as "Name" from test.student
5个回答

416

MySQL使用+||进行连接的方式与大多数DBMS不同。 它使用CONCAT函数:

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

还有一个称为CONCAT_WS(带分隔符连接)函数,它是CONCAT()的一种特殊形式:

SELECT CONCAT_WS(' ', first_name, last_name) from test.student

话虽如此,如果你想把 || 当作字符串连接操作符(与在 MySQL 中使用 CONCAT() 一样),而不是作为 OR 的同义词,你可以设置 PIPES_AS_CONCAT SQL 模式。


20
更好的答案是,解释MySQL不使用连接运算符。 - DonBecker
1
对于那些使用Doctrine的人,我不得不在CONCAT中使用单引号来表示空格,并在整个查询周围使用双引号。 - craned
4
设置PIPES_AS_CONCATSET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');。取消设置:SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');。更多示例请参见 https://mariadb.com/kb/en/library/sql-mode/#examples 。 - mivk

34

尝试:

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

或者,更好的方法:

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

12

使用concat() 函数代替+,例如:

select concat(firstname, lastname) as "Name" from test.student

5

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接