Mysql 函數concat、concat_ws和group_concat


1.concat?
concat()函數是將多個字符串組合在一起,形成一個大的字符串;如果連接的字符串中存在一個為NULL,則輸出的結果為NULL,語法格式為:
concat(str1,str2,....strn)

-- 1、字符之間不加連接符
mysql> select concat("01","趙雷","男");
+-----------------------------+
| concat("01","趙雷","男")    |
+-----------------------------+
| 01趙雷男                    |
+-----------------------------+
1 row in set (0.00 sec)-- 2、字符之間添加連接符
mysql> select concat("01-","趙雷-","男");
+-------------------------------+
| concat("01-","趙雷-","男")    |
+-------------------------------+
| 01-趙雷-男                    |
+-------------------------------+
1 row in set (0.00 sec)-- 3、忽略空字符串
mysql> mysql> select concat("01","趙雷","","男");
+--------------------------------+
| concat("01","趙雷","","男")    |
+--------------------------------+
| 01趙雷男                       |
+--------------------------------+
1 row in set (0.00 sec)-- 4、存在NULL的情況
mysql> select concat("01","趙雷",NULL,"男");  -- 結果直接顯示為NULL
+----------------------------------+
| concat("01","趙雷",NULL,"男")    |
+----------------------------------+
| NULL                             |
+----------------------------------+
1 row in set (0.01 sec)

上面的NULLMySQLNULL,如果NULL本身就是字符串,則結果不相同:

mysql> select concat("01","趙雷","NULL","男");
+------------------------------------+
| concat("01","趙雷","NULL","男")    |
+------------------------------------+
| 01趙雷NULL男                       |
+------------------------------------+
1 row in set (0.01 sec)

2.concat_ws
concat_ws()函數相比較于concat()多了一個指定的連接符號,語法為:
concat_ws(separator, str1, str2, str3)

-- 1、指定不同的連接符號:分別指定逗號和加號mysql> select concat_ws(",","01","趙雷","男");
+------------------------------------+
| concat_ws(",","01","趙雷","男")    |
+------------------------------------+
| 01,趙雷,男                         |
+------------------------------------+
1 row in set (0.00 sec)mysql> select concat_ws("+","01","趙雷","男");
+------------------------------------+
| concat_ws("+","01","趙雷","男")    |
+------------------------------------+
| 01+趙雷+男                         |
+------------------------------------+
1 row in set (0.00 sec)-- 2、不忽略空字符串
mysql> select concat_ws("+","01","趙雷","","男");
+---------------------------------------+
| concat_ws("+","01","趙雷","","男")    |
+---------------------------------------+
| 01+趙雷++男                           |
+---------------------------------------+
1 row in set (0.00 sec)-- 3、忽略NULL;不管幾個NULL都會忽略
mysql> select concat_ws("+","01","趙雷",NULL,"男");
+-----------------------------------------+
| concat_ws("+","01","趙雷",NULL,"男")    |
+-----------------------------------------+
| 01+趙雷+男                              |
+-----------------------------------------+
1 row in set (0.00 sec)-- 忽略兩個NULL
mysql> select concat_ws("+","01",NULL,"趙雷",NULL,"男");
+----------------------------------------------+
| concat_ws("+","01",NULL,"趙雷",NULL,"男")    |
+----------------------------------------------+
| 01+趙雷+男                                   |
+----------------------------------------------+
1 row in set (0.00 sec)
3.group_concat

group:分組的意思;concat:連接。合起來就是分組連接,具體語法為:

GROUP_CONCAT(DISTINCT expression ORDER BY expression SEPARATOR sep);
  • DISTINCT子句用于在連接分組之前消除組中的重復值
  • ORDER BY 連接之前按升序或者降序排列。默認是升序
  • SEPARATOR指定在組中的值之間插入的文字值。如果不指定分隔符,則GROUP_CONCAT函數使用逗號()作為默認分隔符
  • 函數會自動忽略NULL值,如果所有的參數都是NULL,則結果返回NULL
  • GROUP_CONCAT函數返回二進制或非二進制字符串,取決于參數。 默認情況下,返回字符串的最大長度為1024。通過在SESSIONGLOBAL級別設置group_concat_max_len系統變量來擴展最大長度。
set session group_concat_max_len=18783847439738273;  -- 防止超出范圍數據被截掉
-- 1、將每個學生的成績單獨列出來
mysql> select s_id, group_concat(s_score) from Score group by s_id;
+------+-----------------------+
| s_id | group_concat(s_score) |
+------+-----------------------+
| 01   | 80,90,96              |
| 02   | 70,60,80              |
| 03   | 80,81,85              |
| 04   | 50,40,30              |
| 05   | 76,87                 |
| 06   | 43,56                 |
| 07   | 89,94                 |
+------+-----------------------+
7 rows in set (0.01 sec)-- 2、指定連接符+
mysql> select s_id, group_concat(s_score separator "+") from Score group by s_id;
+------+-------------------------------------+
| s_id | group_concat(s_score separator "+") |
+------+-------------------------------------+
| 01   | 80+90+96                            |
| 02   | 70+60+80                            |
| 03   | 80+81+85                            |
| 04   | 50+40+30                            |
| 05   | 76+87                               |
| 06   | 43+56                               |
| 07   | 89+94                               |
+------+-------------------------------------+
7 rows in set (0.00 sec)-- 3、指定排序的字段
-- 分數s_score已經完成了排序(指定了降序);上面的結果不指定則默認是降序
mysql> select s_id, group_concat(distinct s_score order by s_score desc separator "+") from Score group by s_id;
+------+--------------------------------------------------------------------+
| s_id | group_concat(distinct s_score order by s_score desc separator "+") |
+------+--------------------------------------------------------------------+
| 01   | 96+90+80                                                           |
| 02   | 80+70+60                                                           |
| 03   | 85+81+80                                                           |
| 04   | 50+40+30                                                           |
| 05   | 87+76                                                              |
| 06   | 56+43                                                              |
| 07   | 94+89                                                              |
+------+--------------------------------------------------------------------+
7 rows in set (0.00 sec)-- 4、去重操作
-- distinct s_score表示對分數去重,取出每個學生的不同分數(表中每個學生的分數都不相同,結果同上)
mysql> select s_id, group_concat(distinct s_score order by s_score desc separator "+") from Score group by s_id;
+------+--------------------------------------------------------------------+
| s_id | group_concat(distinct s_score order by s_score desc separator "+") |
+------+--------------------------------------------------------------------+
| 01   | 96+90+80                                                           |
| 02   | 80+70+60                                                           |
| 03   | 85+81+80                                                           |
| 04   | 50+40+30                                                           |
| 05   | 87+76                                                              |
| 06   | 56+43                                                              |
| 07   | 94+89                                                              |
+------+--------------------------------------------------------------------+
7 rows in set (0.00 sec)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909253.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909253.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909253.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

“在同一事務中“ 的含義

一、"在同一事務中" 的核心含義 "在同一事務中" 指多個數據庫操作共享同一個事務上下文,具有以下特點: 原子性保證:所有操作要么全部成功提交,要么全部失敗回滾。隔離性共享:操作使用相同的隔離…

【Create my OS】從零編寫一個操作系統

前言: 相信每個自學操作系統的同學,大致學習路線都離不開 HIT-OS、MIT-6.S081、MIT-6.824、MIT-6.828等經典的公開課。但學習完這些經典公開課并完成相應的Lab,很多同學腦海中對于操作系統的知識其實都是零散的,讓你從頭開始編寫一…

計算機視覺與深度學習 | 低照度圖像增強算法綜述(開源鏈接,原理,公式,代碼)

低照度圖像增強算法綜述 1 算法分類與原理1.1 傳統方法1.2 深度學習方法2 核心算法詳解2.1 多尺度Retinex (MSRCR) 實現2.2 SCI自校準光照學習2.3 自適應伽馬校正2.4 WaveletMamba架構3 開源資源與實現3.1 主流算法開源庫3.2 關鍵代碼實現4 評估與實驗對比4.1 客觀評價指標4.2 …

【工具教程】批量PDF識別提取區域的內容重命名,將PDF指定區域位置的內容提取出來改名的具體操作步驟

在企業運營過程中,時常會面臨處理海量 PDF 文件的挑戰。從 PDF 指定區域提取內容并用于重命名文件,能極大地優化企業內部的文件管理流程,提升工作效率。以下為您詳細介紹其在企業中的應用場景、具體使用步驟及注意事項。? 詳細使用步驟? 選…

【Java多線程從青銅到王者】定時器的原理和實現(十一)

定時器 定時器時我們日常開發中會用到的組件工具,類似于一個"鬧鐘",設定一個時間,等到了時間,定時器最自動的去執行某個邏輯,比如博客的定時發布,就是使用到了定時器 Java標準庫里面也提供了定時…

深入剖析AI大模型:Prompt 優化的底層邏輯

記得看到一篇NLP的文章,就 Prompt 時序效應的論文揭示了一個有趣現象,文章中說:模型對指令的解析存在 "注意力衰減" 特性 —— 就像人類閱讀時會更關注段落開頭,模型對 Prompt 前 20% 的內容賦予的權重高達 60%。這個發…

【備忘】PHP web項目一般部署辦法

【PHP項目一般部署辦法】 操作步驟 代碼: 把php項目代碼clone到指定位置如www/下新建php站點,填寫域名,把站點根目錄設置為項目根目錄項目入口設置,一般為public/項目權限改為766(特殊時候可設置為777),如果有特殊要求…

【60 Pandas+Pyecharts | 箱包訂單數據分析可視化】

文章目錄 🏳??🌈 1. 導入模塊🏳??🌈 2. Pandas數據處理2.1 讀取數據2.2 數據信息2.3 去除訂單金額為空的數據2.5 提取季度和星期 🏳??🌈 3. Pyecharts數據可視化3.1 每月訂單量和訂單金額分布3.2 各季…

玩轉Docker | 使用Docker部署vaultwarden密碼管理器

玩轉Docker | 使用Docker部署vaultwarden密碼管理器 前言一、vaultwarden介紹Vaultwarden 簡介主要特點二、系統要求環境要求環境檢查Docker版本檢查檢查操作系統版本三、部署vaultwarden服務下載vaultwarden鏡像編輯部署文件創建容器檢查容器狀態檢查服務端口安全設置四、配置…

晶振的多面舞臺:從日常電子到高精尖科技的應用探秘

在現代科技的宏大舞臺上,晶振宛如一位低調卻至關重要的幕后主角,以其穩定的頻率輸出,為各類電子設備賦予了精準的“脈搏”。從我們日常生活中須臾不離的電子設備,到引領時代前沿的高精尖科技領域,晶振都發揮著不可替代…

uni-app 小程序 Cannot read property ‘addEventListener‘ of undefined, mounted hook

在用 uni-app 開發微信小程序時,提示 Cannot read property addEventListener of undefined, mounted hook document.addEventListener("mousemove", this.touchmove) 在小程序開發里,addEventListener 并非通用的標準 API,不過與…

《專業小詞開課啦》——冪等

在系統對接過程中,當出現接口調用異常的情況時,程序員可能會用一些專業術語來答疑......對于0基礎同學,自然是需要自行百度一番,學習一下! 接下來,先學習【冪等】 PS: 小白參考1.1~1.4內容即…

滲透實戰PortSwigger Labs指南:自定義標簽XSS和SVG XSS利用

阻止除自定義標簽之外的所有標簽 先輸入一些標簽測試&#xff0c;說是全部標簽都被禁了 除了自定義的 自定義<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 當元素獲得焦點時&#xff08;如通過點擊或鍵盤導航&…

利用pycharm搭建模型步驟

1 如何將別人論文的代碼跑起來&#xff0c;以Pycharm為例&#xff0c;在下載代碼的時候&#xff0c;要注意使用的python版本是多少&#xff0c;并且要注意使用的keras和tensorflow等文件夾的版本&#xff0c;我們可以直接使用pycharm中file文件中的settings&#xff0c;來添加相…

Qt 中directoryChanged監聽某個目錄的內容是否發生變化

Qt 中&#xff0c;directoryChanged 是 QFileSystemWatcher 類的一個信號&#xff0c;用于監聽某個目錄的內容是否發生變化&#xff08;如添加、刪除文件或子目錄&#xff09; ? 一、功能說明 QFileSystemWatcher::directoryChanged(const QString &path) 信號的作用是&…

JavaWeb(Servlet預習)

案例1&#xff1a;基于jspServlet實現用戶登錄驗證 1.input.jsp <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset"UTF-8&q…

Docker Compose 部署 Prometheus + Grafana

安裝 docker-compose.yml version: 3.8services:# Prometheus 監控服務prometheus:image: prom/prometheus:latestcontainer_name: prometheusrestart: unless-stoppedvolumes:- ./conf/prometheus.yml:/etc/prometheus/prometheus.yml- ./prometheus_data:/prometheuscomman…

準確--使用 ThinBackup 插件執行備份和恢復

使用 ThinBackup 插件執行備份和恢復 導出&#xff08;備份&#xff09;步驟&#xff1a; 進入 Manage Jenkins > ThinBackup。設置 Backup schedule for full backups&#xff08;可選&#xff09;&#xff0c;并配置 Files to exclude&#xff08;可選&#xff09;。點擊…

Qt Creator 從入門到項目實戰

Qt Creator 簡介 Qt Creator 是一個跨平臺的集成開發環境&#xff08;IDE&#xff09;&#xff0c;專門用于開發 Qt 應用程序。它為開發者提供了一個強大的工具集&#xff0c;包括代碼編輯器、調試器、UI 設計器以及性能分析工具等。 1.1 Qt Creator 的安裝 Qt Creator 支持…

公司內網遠程訪問配置教程:本地服務器(和指定端口應用)實現外網連接使用

在數字化時代&#xff0c;企業的辦公模式日益多元化&#xff0c;遠程辦公、跨地區協作等需求不斷增加。這使得在公司內網中配置遠程訪問變得至關重要&#xff0c;它能讓員工無論身處何地&#xff0c;只要有網絡連接&#xff0c;就能便捷地訪問公司內部的各類資源&#xff0c;如…