【MySQL】:高效利用MySQL函數實用指南

個人頭像
🎥 嶼小夏 : 個人主頁
🔥個人專欄 : MySQL從入門到進階
🌄 莫道桑榆晚,為霞尚滿天!

文章目錄

  • 📑前言
  • 一. MySQL函數概論
  • 二. 字符串函數
  • 三. 數值函數
  • 四. 日期函數
  • 五. 流程函數
  • 🌤?全篇總結

在這里插入圖片描述

📑前言

MySQL中的函數是一種強大的工具,可以幫助我們在數據庫中快速處理數據,完成各種業務需求。本文將深入介紹MySQL中的字符串函數、數值函數、日期函數和流程函數,通過實例演示和詳細解釋,幫助讀者掌握這些函數的使用方法,從而提高數據庫操作的效率和靈活性。

一. MySQL函數概論

函數 是指一段可以直接被另一段程序調用的程序或代碼。 也就意味著,這一段程序或代碼在MySQL中已經給我們提供了,我們要做的就是在合適的業務場景調用對應的函數完成對應的業務需求即可。 那么,函數到底在哪兒使用呢?

image-20231220094944594

  • 在企業的OA或其他的人力系統中,經常會提供的有這樣一個功能,每一個員工登錄上來之后都能夠看到當前員工入職的天數。 而在數據庫中,存儲的都是入職日期,如 2000-11-12,那如果快速計算出天數呢?
  • 在做報表這類的業務需求中,我們要展示出學員的分數等級分布。而在數據庫中,存儲的是學生的分數值,如98/75,如何快速判定分數的等級呢?

其實,上述的這一類的需求呢,我們通過MySQL中的函數都可以很方便的實現 。

MySQL中的函數主要分為以下四類: 字符串函數、數值函數、日期函數、流程函數。

二. 字符串函數

MySQL中內置了很多字符串函數,常用的幾個如下:

函數功能
CONCAT(S1,S2,…Sn)字符串拼接,將S1,S2,… Sn拼接成一個字符串
LOWER(str)將字符串str全部轉為小寫
UPPER(str)將字符串str全部轉為大寫
LPAD(str,n,pad)左填充,用字符串pad對str的左邊進行填充,達到n個字符 串長度
RPAD(str,n,pad)右填充,用字符串pad對str的右邊進行填充,達到n個字符 串長度
TRIM(str)去掉字符串頭部和尾部的空格
SUBSTRING(str,start,len)返回從字符串str從start位置起的len個長度的字符串

演示如下:

A. concat : 字符串拼接

select concat('Hello' , ' MySQL');

B. lower : 全部轉小寫

select lower('Hello');

C. upper : 全部轉大寫

select upper('Hello');

D. lpad : 左填充

select lpad('01', 5, '-');

E. rpad : 右填充

select rpad('01', 5, '-');

F. trim : 去除空格

select trim(' Hello MySQL ');

G. substring : 截取子字符串

select substring('Hello MySQL',1,5);

三. 數值函數

常見的數值函數如下:

函數功能
CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x,y)返回x/y的模
RAND()返回0~1內的隨機數
ROUND(x,y)求參數x的四舍五入的值,保留y位小數

演示如下:

A. ceil:向上取整

select ceil(1.1);

B. floor:向下取整

select floor(1.9);

C. mod:取模

select mod(7,4);

D. rand:獲取隨機數

select rand();

E. round:四舍五入

select round(2.344,2);

四. 日期函數

常見的日期函數如下:

函數功能
CURDATE()返回當前日期
CURTIME()返回當前時間
NOW()返回當前日期和時間
YEAR(date)獲取指定date的年份
MONTH(date)獲取指定date的月份
DAY(date)獲取指定date的日期
DATE_ADD(date, INTERVAL expr type)返回一個日期/時間值加上一個時間間隔expr后的 時間值
DATEDIFF(date1,date2)返回起始時間date1 和 結束時間date2之間的天 數

演示如下:
A. curdate:當前日期

select curdate();

B. curtime:當前時間

select curtime();

C. now:當前日期和時間

select now();

D. YEAR , MONTH , DAY:當前年、月、日

select YEAR(now());
select MONTH(now());
select DAY(now());

E. date_add:增加指定的時間間隔

select date_add(now(), INTERVAL 70 YEAR );

F. datediff:獲取兩個日期相差的天數

select datediff('2021-10-01', '2021-12-01');

五. 流程函數

流程函數也是很常用的一類函數,可以在SQL語句中實現條件篩選,從而提高語句的效率。

函數功能
IF(value , t , f)如果value為true,則返回t,否則返回 f
IFNULL(value1 , value2)如果value1不為空,返回value1,否則 返回value2
CASE WHEN [ val1 ] THEN [res1] … ELSE [ default ] END如果val1為true,返回res1,… 否 則返回default默認值
CASE [ expr ] WHEN [ val1 ] THEN [res1] … ELSE [ default ] END如果expr的值等于val1,返回 res1,… 否則返回default默認值

演示如下:

A. if

select if(false, 'Ok', 'Error');

B. ifnull

select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');

C. case when then else end

需求: 查詢emp表的員工姓名和工作地址 (北京/上海 ----> 一線城市 , 其他 ----> 二線城市)

selectname,( case workaddress when '北京' then '一線城市' when '上海' then '一線城市' else'二線城市' end ) as '工作地址'
from emp;

🌤?全篇總結

本文詳細介紹了MySQL中常用的字符串函數、數值函數、日期函數和流程函數,包括各種函數的功能、語法和實際應用。通過學習本文,讀者可以掌握在實際業務場景中如何靈活運用這些函數,從而更高效地處理數據庫中的數據,滿足各種業務需求。

image-20231220160021552

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

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

相關文章

基于NSFW數據集的違規圖片檢測系統

目錄 一、功能介紹 二、安裝部署說明 2.1數據集簡介 2.2文件目錄說明 一、功能介紹 本程序是一個違規圖片檢測系統,能夠識別用戶上傳的信息圖片,是否包含有敏感(NSFW,Not Safe For Work)信息。 本程序使用雅虎開源的NS…

前后端分離開發

目錄 前言 一、前后端分離開發 1. 介紹 2. 開發流程 3. 前端技術棧 (1)開發工具: (2)技術框架: 二、Yapi 1. 介紹 2. 使用 (1)準備 (2)定義接口 (3&#x…

芯科科技為全球首批原生支持Matter-over-Thread的智能鎖提供強大助力,推動Matter加速成為主流技術

智能鎖領域的先鋒企業U-tec和Nuki選擇芯科科技解決方案,成為Matter-over-Thread應用的領先者 致力于以安全、智能無線連接技術,建立更互聯世界的全球領導廠商Silicon Labs(亦稱“芯科科技”,NASDAQ:SLAB)今…

2024廣東水展即將開幕 | 聚焦凈水行業熱點搶占行業新機遇

2024廣東水展即將開幕 | 聚焦凈水行業熱點搶占行業新機遇 隨著消費升級和人們對環境健康的意識增強,人們除了關注凈水產品的性能外,對產品的設計、服務、多應用場景化等需求也愈發多樣化。節能環保、智能化成為產品迭代升級主要方向。據奧維云網數據顯示…

Docker中使用Tomcat并部署war工程

系列文章目錄 文章目錄 系列文章目錄前言一、構建鏡像二、運行鏡像三、列出正在運行的容器四、停止正在運行的容器 前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站,這篇文…

物聯網技術助力智慧城市安全建設:構建全方位、智能化的安全防護體系

一、引言 隨著城市化進程的加速和信息技術的迅猛發展,智慧城市已成為現代城市發展的重要方向。在智慧城市建設中,安全是不可或缺的一環。物聯網技術的快速發展為智慧城市安全建設提供了有力支持,通過構建全方位、智能化的安全防護體系&#…

Kali Linux 安裝 + 獲取 root 權限 + 遠程訪問

一、什么是Kali kali是linux其中一個發行版,基于Debian,前身是BackTrack(簡稱BT系統)。kali系統內置大量滲透測試軟件,可以說是巨大的滲透系統,涵蓋了多個領域,如無線網絡、數字取證、服務器、密…

Python讀取hbase數據庫

1. hbase連接 首先用hbase shell 命令來進入到hbase數據庫,然后用list命令來查看hbase下所有表,以其中表“DB_level0”為例,可以看到庫名“baotouyiqi”是拼接的,python代碼訪問時先連接: def hbase_connection(hbase…

red hat 6.9版本7.9版本 忘記root密碼重置方法

文章目錄 1、重置密碼具體步驟Oracle Linux 6.9版本:1、開機到此界面按e2、在以下界面選擇后按e3、選擇相應內核后按e4、在此界面輸入 single 回車5、回到內核界面后按b進入引導系統6、在#后輸入passwd root修改密碼7、修改密碼:8、Reboot重啟9、使用新密…

【工作實踐-06】uniapp使用webView

一、建立APP頁面和webview的通訊 1.引入webview.js App 端使用 uni.web-view.js 的最低版為 uni.webview.1.5.4.js APP端可以支持網絡網頁和本地網頁,但如果使用本地網頁和相關資源(js、css等文件)必須放在 static 目錄下。 2.引入搭橋docum…

PostgreSQL中int類型達到上限的一些處理方案

使用int類型作為表的主鍵在pg中是很常見的情況,但是pg中int類型的范圍在-2147483648到2147483647,最大只有21億,這個在一些大表中很容易就會達到上限。一旦達到上限,那么表中便沒辦法在插入數據了,這個將會是很嚴重的問…

【react native】css踩坑記錄

1、IOS上面opacity重疊失效 在 iOS 上,當兩個具有相同背景色的元素重疊時,不透明度(opacity)較低的元素會顯示在較高的元素上方。 所以考慮使用rgba的形式。 // 對于下面這種寫法,如果存在container和activeIndicat…

word文檔空格不能有下劃線【筆記】

word文檔空格不能有下劃線 2024-3-1 21:20:24 推薦 word下劃線打不出來了,是怎么回事? 問題 字后面打不出來下劃線 操作 1.點擊文件 左上角,點擊“文件”。 2.點擊選項 鼠標下滑,點擊“選項”。 3.點擊常規與保存 點擊“…

java基礎-mysql

文章目錄 mysql基礎面試題什么是mysql什么是事務并發事務帶來的影響事物的隔離級別索引大表優化什么是池化思想,什么是數據庫連接池,為什么要用數據庫連接池?鎖,表鎖;樂觀鎖,悲觀鎖MySQL主備同步的基本原理SQL什么情況…

[⑥5G NR]: 無線接口協議,信道映射學習

5G系統整體包括核心網、接入網以及終端部分,接入網與終端間通過無線空口協議棧進行連接。無線接口可分為三個協議層:物理層(L1)、數據鏈路層(L2)和網絡層(L3)。 L1:物理…

【python】json轉成成yaml中文編碼異常顯示成:\u5317\u4EAC\u8DEF123\u53F7

姊妹篇:【python】json轉成成yaml json數據 {"name": "張三","age": 30,"isMarried": false,"children": [{"name": "小王","age": 5},{"name": "小李",&qu…

mysql冷備

數據庫備份類型 冷備份:在數據庫停止服務的情況下進行備份 熱備份:在數據庫處于運行狀態下進行備份 溫備份:不可寫但可讀的情況下進行備份 冷備分時,只需要在停止數據庫后,拷貝數據目錄到另一個地方即可。 mysql 啟…

為什么不能啟動游戲錯誤代碼126 加載bugreportnew.dll失敗

錯誤代碼126通常表示在嘗試加載某個動態鏈接庫(DLL)文件時出現了問題。在您提到的例子中,bugreportnew.dll 文件未能成功加載,這可能是由于以下幾個原因: 騰訊云2024新春采購節優惠活動入口:https://curl.q…

Linux---進程信號

一、信號的概念 信號是一種向目標進程發送通知消息的機制 信號的特性(可以結合紅綠燈、防空警報等生活樣例來理解) 1、在信號沒有出現之前,我們就已經知道如何去處理信號,即我們認識信號 2、信號是異步產生的,即我們不知道它具體何時產生 3、…

基于MQTT協議實現微服務架構事件總線

一、場景描述 昨天在博客《客戶端訂閱服務端事件的實現方法》中提出了利用websocket、服務端EventEmitter和客戶端mitt實現客戶端訂閱服務端事件,大大簡化了客戶端對服務端數據實時響應的邏輯。上述方案適用于單服務節點的情形。 對于由服務集群支撐的微服務架構&…