MySQL 拼接所有列
在MySQL中,有时候我们需要将多个列的值拼接在一起,可以使用CONCAT()函数。
阅读更多:MySQL 教程
CONCAT() 函数
CONCAT()函数用于连接两个或多个字符串,在MySQL中可以将列中的值拼接在一起。
语法如下:
CONCAT(str1,str2,...)
其中,str1,str2,...是要连接的字符串。可以是直接输入的字符串,也可以是需要连接的列名。
例如,我们有一张表students,其中有name、age、gender三列。我们可以使用以下语句将这三列的值拼接在一起:
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拼接所有列的介绍,希望对读者有所帮助。
极客笔记