千家信息网

怎么理解MySQL中组合字段的oncat()

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章给大家分享的是有关怎么理解MySQL中组合字段的oncat(),小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、简介MySQL是
千家信息网最后更新 2026年11月02日怎么理解MySQL中组合字段的oncat()

本篇文章给大家分享的是有关怎么理解MySQL中组合字段的oncat(),小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1、简介

MySQL是关系型数据库,我们在使用的时候往往会将对象的属性映射成列存储在表中,因此查询的到的结果在不做任何处理的情况下,也是一个个单独的属性;如果我们希望在MySQL中查询返回的结果集,能够将多个字段(列)的值组合起来返回、或者经过特定的计算后再返回,就可以使用MySQL提供的字段计算功能。

字段计算经常会用到如下两种:

  • 字段拼接

  • 字段执行算术计算

2、正文

MySQL中实现的字段组合都可以在客户机中完成,但是直接在MySQL服务器中实现字段组合会比客户机速度更快。

2.1 字段拼接

准备一张user表,插入几条数据,如下所示:

SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user`  (  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',  `nation` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '民族',  PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES (1, '李子捌', '汉族');INSERT INTO `user` VALUES (2, '张三', '回族');INSERT INTO `user` VALUES (3, '李四', '维吾尔族');INSERT INTO `user` VALUES (4, '王五', '蒙古族');SET FOREIGN_KEY_CHECKS = 1;

需求:

获取用户的姓名和民族组合信息

语句:

mysql> select concat(name, '(',nation, ')')   from user;+---------------------------------+| concat(name, '(',nation, ')') |+---------------------------------+| 李子捌(汉族)                  || 张三(回族)                    || 李四(维吾尔族)                || 王五(蒙古族)                  |+---------------------------------+

解析:

这里使用了concat()函数,函数中可以组合任意多个元素,这些元素可以是表字段、固定字符等,元素之间使用,分隔,组合的顺序和concat()函数中字符的顺序一致。

关于组合之后的字段名问题?

细心的小伙伴发现组合之后的字段名使用的是concat()函数的整个函数体,显然这种显示不是我们想要的呀!如果想要指定自己想要的字段名,只需要使用别名即可!

mysql> select concat(name, '(',nation, ')') as user_message  from user;+------------------+| user_message     |+------------------+| 李子捌(汉族)   || 张三(回族)     || 李四(维吾尔族) || 王五(蒙古族)   |+------------------+

别名的用法就是使用as,后面紧跟着的就是你想要指定的字段名。

2.2 字段执行算术计算

组合字段我们往往不只是简单的字符串拼接,可能会涉及到字段与字段之间的算术预算,此时我们就需要使用到MySQL中的算术操作符。

MySQL提供了加减乘除操作符如下所示:

操作符说明
+加
-减
*乘
/

准备一张product表,插入几条数据,如下所示:

SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for product-- ----------------------------DROP TABLE IF EXISTS `product`;CREATE TABLE `product`  (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',  `product_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '产品名称',  `price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '产品价格',  `number` int(11) NOT NULL COMMENT '产品数量',  PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of product-- ----------------------------INSERT INTO `product` VALUES (1, 'Apple iPhone 13 (A2634)', 6799.00, 22);INSERT INTO `product` VALUES (2, 'HUAWEI P50 Pro', 6488.00, 88);INSERT INTO `product` VALUES (3, 'MIX4', 4999.00, 30);INSERT INTO `product` VALUES (4, 'OPPO Find X3', 3999.00, 15);INSERT INTO `product` VALUES (5, 'vivo X70 Pro+', 5999.00, 27);SET FOREIGN_KEY_CHECKS = 1;

需求:

查询目前库存产品总值

语句:

mysql> select product_name, concat(price * number) as gross_value from product;+-------------------------+-------------+| product_name            | gross_value |+-------------------------+-------------+| Apple iPhone 13 (A2634) | 149578.00   || HUAWEI P50 Pro          | 570944.00   || MIX4                    | 149970.00   || OPPO Find X3            | 59985.00    || vivo X70 Pro+           | 161973.00   |+-------------------------+-------------+

运算符顺序问题:

MySQL中运算符也是有顺序的,和普通运算符运算顺序一样, (* / ) > (+ -) ,如果在使用组合运算符时一定要注意运算符的顺序,合理使用()可以约束运算符的执行顺序。

示例:

mysql> select concat(12 - 3 * 4);+--------------------+| concat(12 - 3 * 4) |+--------------------+| 0                  |+--------------------+1 row in set (0.00 sec)mysql> select concat((12 - 3) * 4);+----------------------+| concat((12 - 3) * 4) |+----------------------+| 36                   |+----------------------+1 row in set (0.00 sec)

值得注意的是MySQL中,被除数为0,并不会抛出异常,但是会返回NULL,这是MySQL内部对运算做了异常处理。

mysql> select concat(12 / 0);+----------------+| concat(12 / 0) |+----------------+| NULL           |+----------------+1 row in set, 1 warning (0.00 sec)

以上就是怎么理解MySQL中组合字段的oncat(),小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

字段 组合 顺序 运算 函数 运算符 产品 算术 元素 字符 就是 操作符 数据 李子 张三 李四 王五 蒙古 回族 汉族 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 西安纸贵互联网科技有限公司 江苏根荣互联网科技 苏州找大状互联网科技有限公司 互联网 科技创新 上海电发互联网科技有限公司 广州慧亚互联网科技怎么样 互联网科技中介 湖南诚度互联网科技有限公司 宝灵互联网科技有限公司 花神(南京)互联网科技有限公司 互联网科技公司有风险吗 允成互联网科技有限公司融资 科技赋能视角下互联网保险发展 21世纪互联网科技成就 浙南科技城互联网大厦招聘 上海创道互联网络科技有限公司 风投北京互联网科技 易租星互联网科技有限公司 互联网科技创新方面的资料 咖啡 深圳市人人互联网科技有限公司 湖南永感互联网科技有限公司 科技赋能下的互联网金融 中国最先进互联网科技公司 互联网公司科技股 千方科技属于互联网企业吗 开一家科技互联网公司需要多少钱 佛山市翊博互联网络科技有限公司 互联网科技职业技能培训学校
0