您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么理解MySQL中組合字段的oncat(),小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
MySQL
是關系型數據庫,我們在使用的時候往往會將對象的屬性映射成列存儲在表中,因此查詢的到的結果在不做任何處理的情況下,也是一個個單獨的屬性;如果我們希望在MySQL
中查詢返回的結果集,能夠將多個字段(列)的值組合起來返回、或者經過特定的計算后再返回,就可以使用MySQL
提供的字段計算功能。
字段計算經常會用到如下兩種:
字段拼接
字段執行算術計算
MySQL
中實現的字段組合都可以在客戶機中完成,但是直接在MySQL
服務器中實現字段組合會比客戶機速度更快。
準備一張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
,后面緊跟著的就是你想要指定的字段名。
組合字段我們往往不只是簡單的字符串拼接,可能會涉及到字段與字段之間的算術預算,此時我們就需要使用到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(),小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。