MySQL中的字符串连接

Ros*_*han 128 mysql concat mysql-workbench

我正在使用MySQL和MySQL Workbench 5.2 CE.当我尝试来连接2列,last_name并且first_name,它不工作:

select first_name + last_name as "Name" from test.student
Run Code Online (Sandbox Code Playgroud)

Eug*_*ash 235

MySQL与大多数DBMS使用+||用于连接不同.它使用的CONCAT功能:

SELECT CONCAT(first_name, " ", last_name) AS Name FROM test.student
Run Code Online (Sandbox Code Playgroud)

正如@eggyal在评论中指出的那样,您可以||通过设置PIPES_AS_CONCATSQL模式在MySQL中启用字符串连接.

  • 请注意,这不是*完全正确:当[`PIPES_AS_CONCAT`](http://dev.mysql.com/doc/en/server-sql-mode.)时,MySQL*支持`||`进行字符串连接. html #sqlmode_pipes_as_concat)启用SQL模式. (24认同)
  • 更好的答案,解释说MySQL不使用连接运算符. (7认同)
  • 设置`PIPES_AS_CONCAT`:`SET @@ 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 (3认同)

ADW*_*ADW 26

尝试:

select concat(first_name,last_name) as "Name" from test.student
Run Code Online (Sandbox Code Playgroud)

或更好:

select concat(first_name," ",last_name) as "Name" from test.student
Run Code Online (Sandbox Code Playgroud)


Har*_*Joy 8

使用concat()函数而不是+像这样:

select concat(firstname, lastname) as "Name" from test.student
Run Code Online (Sandbox Code Playgroud)


gil*_*des 6

除此之外,concat您还可以使用concat_ws(与分隔符连接):

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

该函数还有一个额外的好处:可以跳过null值。

请参阅https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_concat-ws