(数据库-MySQL)连接字符串 - concat函数、repeat函数

本文介绍了MySQL中CONCAT函数的使用,包括如何连接字符串、处理NULL值,以及CONCAT_WS和GROUP_CONCAT这两个相关函数的用法。示例展示了如何在employees表中操作数据,如拼接姓名,并展示了repeat函数用于复制字符串的功能。这些函数在数据处理时提供了便利。
摘要由CSDN通过智能技术生成

先来个数据表“employees”

创建(表):

drop table if exists  `employees` ; 
CREATE TABLE `employees` (
  `emp_no` int(11) NOT NULL,
  `birth_date` date NOT NULL,
  `first_name` varchar(14) NOT NULL,
  `last_name` varchar(16) NOT NULL,
  `gender` char(1) NOT NULL,
  `hire_date` date NOT NULL,
  PRIMARY KEY (`emp_no`));

插入(数据):
INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');
INSERT INTO employees VALUES(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12');
INSERT INTO employees VALUES(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02');
INSERT INTO employees VALUES(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10');
INSERT INTO employees VALUES(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15');
INSERT INTO employees VALUES(10009,'1952-04-19','Sumant','Peac','F','1985-02-18');
INSERT INTO employees VALUES(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
INSERT INTO employees VALUES(10011,'1953-11-07','Mary','Sluis','F','1990-01-22');

查询(总表):

select * from employees;

MySQL中concat函数

使用方法:

CONCAT(str1,str2,…) 

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

注意:

如果所有参数均为非二进制字符串,则结果为非二进制字符串。

如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。

一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如:

select CONCAT(first_name,CAST(emp_no AS CHAR)) as use_no from employees;

 MySQL的concat函数可以连接一个或者多个字符串,如:

select concat('10');

 select concat('11','22','33');

MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL

select concat('11','22',null);

 

另外两个与 concat相关的函数:concat_ws函数、group_concat函数

附一:concat_ws函数

使用方法:

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

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。

注意:

如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

如:连接后以逗号分隔

select concat_ws(',','11','22','33');

 和MySQL中concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL

select concat_ws(',','11','22',NULL);

我们再做个测试,将employees表的所有员工的last_name和first_name拼接起来作为Name(姓名):

 SELECT 
    concat_ws(' ',e.last_name,e.first_name) AS 姓名
FROM
    employees e;

从上面的输出结果,可以看出concat_ws函数中 ' ' 完美解决了名字连接过程中空格!

附二:group_concat函数

完整的语法如下:

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

以gender分组,把first_name字段的值打印在一行,逗号分隔(默认):

select gender,group_concat(first_name) from employees group by gender;

以gender分组,把去冗余的first_name字段的值打印在一行,

逗号分隔

 select gender,group_concat(distinct first_name) from employees group by gender;

以gender分组,把first_name字段的值打印在一行,逗号分隔,以first_name排倒序

 

repeat()函数

用来复制字符串,如下'ab'表示要复制的字符串,2表示复制的份数

select repeat('ab',2);

又如

select repeat('a',2);

 

以上两种连接字符串的函数 (方式),能快速处理数据连接,concat_ws函数可以根据不同分隔符进行连接!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值