MySQL 拼接所有列

MySQL 拼接所有列

在MySQL中,有时候我们需要将多个列的值拼接在一起,可以使用CONCAT()函数。

阅读更多:MySQL 教程

CONCAT() 函数

CONCAT()函数用于连接两个或多个字符串,在MySQL中可以将列中的值拼接在一起。

语法如下:

CONCAT(str1,str2,...)

其中,str1,str2,...是要连接的字符串。可以是直接输入的字符串,也可以是需要连接的列名。

例如,我们有一张表students,其中有nameagegender三列。我们可以使用以下语句将这三列的值拼接在一起:

SELECT CONCAT(name,age,gender) AS full_info FROM students;

执行结果如下:

full_info
----------
Tom22Male
Mary20Female
...

从上面的结果可以看出,三列拼接在一起成为一列,并用AS关键字为这一列起了一个别名full_info

当然,我们也可以在拼接的时候加上一些连接符,比如空格、逗号、分号等等。只需要在连接字符串之间添加对应的字符即可。

例如,我们可以使用以下语句将姓名和年龄之间加上一个空格,性别后加上一个逗号:

SELECT CONCAT(name,' ',age,',',gender) AS full_info FROM students;

执行结果如下:

full_info
----------
Tom 22,Male
Mary 20,Female
...

CONCAT_WS() 函数

CONCAT_WS()函数是CONCAT()函数的一种变体,更为常用。WS的意思是with separator,即使用分隔符连接字符串。

语法如下:

CONCAT_WS(separator,str1,str2,...)

其中,separator是指定的分隔符,str1,str2,...是要连接的字符串。可以是直接输入的字符串,也可以是需要连接的列名。

例如,我们可以使用以下语句将姓名、年龄和性别之间加上一个空格,并以逗号为分隔符将多个行拼接在一起:

SELECT CONCAT_WS(',', CONCAT(name,' ',age), gender) AS full_info FROM students;

执行结果如下:

full_info
----------
Tom 22,Male
Mary 20,Female
...

从结果可以看出,每个行被逗号分隔开,并且所有列拼接在一起,形成了一个新的列。

两种函数的区别

在实际使用中,CONCAT_WS()函数更为常用,这是因为当某个列为空或者为NULL时,CONCAT()函数执行会出现问题,而CONCAT_WS()函数不会出现这个问题,因为它会忽略掉空或者为NULL的列。

例如,我们有一个包含姓名、年龄、性别和备注的表students_info,部分数据如下:

+----+------+--------+----------+
| id | name | gender | comments |
+----+------+--------+----------+
|  1 | Tom  | Male   | NULL     |
|  2 | Mary | Female | Good     |
+----+------+--------+----------+

我们使用以下语句拼接所有的列:

SELECT CONCAT(name,age,gender,comments) AS full_info FROM students_info;

执行结果如下:

full_info
----------
Tom22MaleNULL
Mary20FemaleGood
...

从结果可以看出,在拼接时,空或者为NULL的列直接被忽略了。

而使用CONCAT_WS()函数时,我们可以使用以下语句将空或者为NULL的列使用指定的字符串替换:

SELECT CONCAT_WS(',', name, age, IFNULL(gender,''), IFNULL(comments,'-')) AS full_info FROM students_info;

执行结果如下:

full_info
----------
Tom,22,Male,-
Mary,20,Female,Good
...

从结果可以看出,空或者为NULL的列被替换成了指定的字符串(空格和短横线)。

另外,CONCAT()函数只接受两个参数时,可以使用||符号代替。例如:

SELECT name || age AS full_info FROM students;

执行结果同样是将name列和age列拼接在一起。

总结

在MySQL中,使用CONCAT()函数或者CONCAT_WS()函数可以方便地将多个列的值拼接在一起,并且可以加上指定的分隔符或者替换空或者为NULL的列。使用时需要注意CONCAT()函数对于空或者为NULL的列的处理,以及参数个数的限制。

以上就是关于MySQL拼接所有列的介绍,希望对读者有所帮助。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程