[Mysql] CONCAT函数 | CONCAT_WS函数

本文详细介绍了MySQL中的CONCAT和CONCAT_WS函数,用于字符串拼接。CONCAT函数可以合并多个字符串,而CONCAT_WS则在每个字符串之间插入指定分隔符。文章通过示例展示了如何使用这两个函数,并提供了实际的数据表操作例子,包括创建和插入数据到milk_tea表中,然后展示不同拼接方式的产品信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CONCAT函数

格式:SELECT CONCAT(str1,str2,...) FROM [表名];

将多个字段拼接为一个字段 (字符串 str1,str2 等多个字符串合并为一个字符串,多个字符串之间用逗号分隔)

可以有很多个参数,如果参数有一个是NULL,则结果返回NULL(使用CONCAT()函数对包含NULL的数据进行拼接时,结果为NULL,所以在对数据进行拼接之前,应该先检查要拼接的字段是否存在NULL)

适合场景: 1.组合多列信息为一列  2.对列的信息进行补充

-- 结果是MySQL
SELECT CONCAT('My', 'S', 'QL');

-- 结果是SQL Runoob Gooogle Facebook
SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook")

-- 结果是Null
SELECT CONCAT('My', NULL, 'QL'); 

-- 一个数字参数被变换为等价的字符串形式
-- 结果是143
SELECT CONCAT(14,3);

CONCAT_WS函数

格式:SELECT CONCAT_WS(拼接符,str1,str2,...) FROM [表名];

同CONCAT(s1,s2,...) 函数,但是每个字符串之间要加上拼接符

适合场景:多字段拼接,字段间使用同样的拼接符(会自动跳过NULL)

-- 结果是data_frog_study
SELECT CONCAT_WS("_", "data", "frog", "study");

-- 结果是SQL-Tutorial-is-fun!
SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;

案例

导入数据

DROP TABLE IF EXISTS `milk_tea`;
CREATE TABLE `milk_tea`  (
  `prod_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `prod_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `net_w` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `pro_date` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `valid_month` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `in_price` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `sale_price` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `milk_tea` VALUES ('1', '奶茶', '150g', '2018-09-11 00:00:00.000', '12', '10.8', '15');
INSERT INTO `milk_tea` VALUES ('2', '奶糖', '150g', '2019-05-13 00:00:00.000', '18', '12.3', '20');
INSERT INTO `milk_tea` VALUES ('3', '棒棒糖', '15g', '2019-04-29 00:00:00.000', '18', '2.1', '2.5');
INSERT INTO `milk_tea` VALUES ('4', '饼干', '200g', NULL, '12', '16.1', '23');
INSERT INTO `milk_tea` VALUES ('5', '薯片', '100g', '2018-08-27 00:00:00.000', '12', '9.3', '15');
INSERT INTO `milk_tea` VALUES ('6', '薯条', '100g', '2018-08-31 00:00:00.000', '12', '8.8', '15');
INSERT INTO `milk_tea` VALUES ('7', '火腿肠', '550g', '2019-02-04 00:00:00.000', '12', '15.5', NULL);
INSERT INTO `milk_tea` VALUES ('8', '方便面', '100g', '2018-12-09 00:00:00.000', '18', '3.6', '4');

milk_tea表

-- CONCAT函数
-- 例题1
SELECT m.*, CONCAT(m.prod_name,m.net_w)AS 产品信息
FROM milk_tea AS m;

-- 例题2
SELECT m.*, CONCAT(m.prod_name,' (',m.net_w,')')AS 产品信息
FROM milk_tea AS m;

-- 例题3
SELECT m.*, CONCAT(m.prod_name,'是',m.net_w,'是',m.sale_price)AS 产品信息
FROM milk_tea AS m;

例题1

例题2

例题3

-- CONCAT_WS函数
-- 例题1
SELECT m.*, CONCAT_WS('是',m.prod_name,m.net_w,m.sale_price)AS 产品信息
FROM milk_tea AS m;

-- 例题2
SELECT m.*, CONCAT_WS('+',m.prod_name,m.net_w,m.sale_price)AS 产品信息
FROM milk_tea AS m;

 例题1

例题2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值