1. 准备表
create table ct(
id int(10) PRIMARY KEY,
name varchar(20) UNIQUE ,
age int(3)
)
1.1 准备数据
insert into ct (id,name,age)
values (1,"小明1",21),
(2,"小明2",null),
(3,"小明3",23),
(4,"小明4",24);
2. concat(str,str,str…)
直接拼接,如果其中一个为空,返回结果当前列为空
mysql> select concat(id,`name`,age) from ct ;
+-----------------------+
| concat(id,`name`,age) |
+-----------------------+
| 1小明121 |
| NULL |
| 3小明323 |
| 4小明424 |
+-----------------------+
4 rows in set (0.00 sec)
3. concat_ws(separator,str,str,str…)
代表 concat with separator ,是concat()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
mysql> select concat_ws("-",id,`name`,age) from ct ;
+------------------------------+
| concat_ws("-",id,`name`,age) |
+------------------------------+
| 1-小明1-21 |
| 2-小明2 |
| 3-小明3-23 |
| 4-小明4-24 |
+------------------------------+
4 rows in set (0.00 sec)
3.1 有一列为空,当前查询结果并不为空
3.2 但是如果分隔符为空,当前查询结果为空
4. concat_ws(separator,str,str,str…)还可以把空进行替换
mysql> select concat_ws('-',id,`name`,ifNULL(age,'==年龄为空了==')) from ct ;
+------------------------------------------------------------+
| concat_ws('-',id,`name`,ifNULL(age,'==年龄为空了==')) |
+------------------------------------------------------------+
| 1-小明1-21 |
| 2-小明2-==年龄为空了== |
| 3-小明3-23 |
| 4-小明4-24 |
+------------------------------------------------------------+
4 rows in set (0.01 sec)