欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中組合字段之concat()

 更新時(shí)間:2021年11月27日 17:15:48   作者:李子捌  
這篇文章主要介紹了MySQL中組合字段之concat(),MySQL是關(guān)系型數(shù)據(jù)庫(kù),我們?cè)谑褂玫臅r(shí)候往往會(huì)將對(duì)象的屬性映射成列存儲(chǔ)在表中,因此查詢的到的結(jié)果在不做任何處理的情況下,也是一個(gè)個(gè)單獨(dú)的屬性,需要的朋友可以參考一下

1、簡(jiǎn)介

MySQL是關(guān)系型數(shù)據(jù)庫(kù),我們?cè)谑褂玫臅r(shí)候往往會(huì)將對(duì)象的屬性映射成列存儲(chǔ)在表中,因此查詢的到的結(jié)果在不做任何處理的情況下,也是一個(gè)個(gè)單獨(dú)的屬性;如果我們希望在MySQL中查詢返回的結(jié)果集,能夠?qū)⒍鄠€(gè)字段(列)的值組合起來(lái)返回、或者經(jīng)過(guò)特定的計(jì)算后再返回,就可以使用MySQL提供的字段計(jì)算功能。

字段計(jì)算經(jīng)常會(huì)用到如下兩種:

  • 字段拼接
  • 字段執(zhí)行算術(shù)計(jì)算

2、正文

MySQL中實(shí)現(xiàn)的字段組合都可以在客戶機(jī)中完成,但是直接在MySQL服務(wù)器中實(shí)現(xiàn)字段組合會(huì)比客戶機(jī)速度更快。

2.1 字段拼接

準(zhǔn)備一張user表,插入幾條數(shù)據(jù),如下所示:

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;

需求:

獲取用戶的姓名和民族組合信息

語(yǔ)句:

mysql> select concat(name, '(',nation, ')')   from user;

+---------------------------------+

| concat(name, '(',nation, ')') |

+---------------------------------+

| 李子捌(漢族)                  |

| 張三(回族)                    |

| 李四(維吾爾族)                |

| 王五(蒙古族)                  |

+---------------------------------+

解析:

這里使用了concat()函數(shù),函數(shù)中可以組合任意多個(gè)元素,這些元素可以是表字段、固定字符等,元素之間使用,分隔,組合的順序和concat()函數(shù)中字符的順序一致。

關(guān)于組合之后的字段名問(wèn)題?

細(xì)心的小伙伴發(fā)現(xiàn)組合之后的字段名使用的是concat()函數(shù)的整個(gè)函數(shù)體,顯然這種顯示不是我們想要的呀!如果想要指定自己想要的字段名,只需要使用別名即可!

mysql> select concat(name, '(',nation, ')') as user_message  from user;

+------------------+

| user_message     |

+------------------+

| 李子捌(漢族)   |

| 張三(回族)     |

| 李四(維吾爾族) |

| 王五(蒙古族)   |

+------------------+

別名的用法就是使用as,后面緊跟著的就是你想要指定的字段名。

2.2 字段執(zhí)行算術(shù)計(jì)算

組合字段我們往往不只是簡(jiǎn)單的字符串拼接,可能會(huì)涉及到字段與字段之間的算術(shù)預(yù)算,此時(shí)我們就需要使用到MySQL中的算術(shù)操作符。

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

操作符 說(shuō)明
+
-
*
/

準(zhǔn)備一張product表,插入幾條數(shù)據(jù),如下所示:

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 '產(chǎn)品名稱',

  `price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '產(chǎn)品價(jià)格',

  `number` int(11) NOT NULL COMMENT '產(chǎn)品數(shù)量',

  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;

需求:

查詢目前庫(kù)存產(chǎn)品總值

語(yǔ)句:

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   |

+-------------------------+-------------+

運(yùn)算符順序問(wèn)題:

MySQL中運(yùn)算符也是有順序的,和普通運(yùn)算符運(yùn)算順序一樣, (* / ) > (+ -) ,如果在使用組合運(yùn)算符時(shí)一定要注意運(yùn)算符的順序,合理使用()可以約束運(yùn)算符的執(zhí)行順序。

示例:

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中,被除數(shù)為0,并不會(huì)拋出異常,但是會(huì)返回NULL,這是MySQL內(nèi)部對(duì)運(yùn)算做了異常處理。

mysql> select concat(12 / 0);

+----------------+

| concat(12 / 0) |

+----------------+

| NULL           |

+----------------+

1 row in set, 1 warning (0.00 sec)

到此這篇關(guān)于MySQL中組合字段之concat()的文章就介紹到這了,更多相關(guān)MySQL中組合字段concat()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論