MySQL學習筆記(6):常用函數

来源:https://www.cnblogs.com/garvenc/archive/2020/06/28/useful_functions.html
-Advertisement-
Play Games

本文更新於2019-06-29,使用MySQL 5.7,操作系統為Deepin 15.4。 數值函數 函數 作用 ABS(x) 絕對值 CEIL(x) 向上取整 FLOOR(x) 向下取整 MOD(x, y) 取餘,等同x%y RAND() [0, 1)區間的隨機數 ROUND(x[, n]) 四舍 ...


本文更新於2019-06-29,使用MySQL 5.7,操作系統為Deepin 15.4。

目錄

數值函數

函數 作用
ABS(x) 絕對值
CEIL(x) 向上取整
FLOOR(x) 向下取整
MOD(x, y) 取餘,等同x%y
RAND() [0, 1)區間的隨機數
ROUND(x[, n]) 四捨五入至n位小數,n預設為0
TRUNCATE(x, n) 截斷為n位小數

日期時間函數

函數 作用
CURDATE() 當前日期
CURTIME() 當前時間
DATE_ADD(t, INTERVAL expr type) 增加一定時間間隔
DATEDIFF(later, previous) later減previous相差的天數,不考慮時間
DATE_FORMAT(t, fmt) 使用fmt格式化
FROM_UNIXTIME(unix) UNIX時間戳的日期時間
HOUR(t) 小時
MINUTE(t) 分鐘
MONTHNAME(t) 月份名(英文)
NOW() 當前日期時間
UNIX_TIMESTAMP(t) 轉換成UNIX時間戳
WEEK(t) 一年中的第幾周
YEAR(t) 年份

DATE_ADD(t, INTERVAL expr type)type可用如下的時間間隔類型。expr使用對應的格式,格式允許不嚴格的間隔(即任何標點符都可)。格式中的數值可使用負數。若整個格式就是一個數值,則可直接使用數值類型的格式,否則應使用字元串類型的格式。

時間間隔類型 格式
YEAR YY
MONTH MM
DAY DD
HOUR hh
MINUTE mm
SECOND ss
YEAR_MONTH YY-MM
DAY_HOUR DD hh
DAY_MINUTE DD hh:mm
DAY_SECOND DD hh:mm:ss
HOUR_MINUTE hh:mm
HOUR_SECOND hh:mm:ss
MINUTE_SECOND mm:ss

DATE_FORMAT(t, fmt)fmt參數可使用的格式符如下:

格式符類型 格式符 說明
%S/%s 兩位數字形式的秒(00, ..., 59)
%i 兩位數字形式的分(00, ..., 59)
%H 兩位數字形式的時,24小時制(00, ..., 23)
%h/%I 兩位數字形式的時,12小時制(01, ..., 12)
%k 數字形式的時,24小時制(0, ..., 23)
%l 數字形式的時,12小時制(1, ..., 12)
時分秒 %T 兩位數字,24小時制的時分秒(hh:mm:ss)
時分秒 %r 兩位數字,12小時制的時分秒(hh:mm:ss AM/PM)
上下午 %p AM或PM
星期 %W 英文星期(Sunday)
星期 %a 英文縮寫星期(Sun)
星期 %w 數字形式的星期(0=Sunday)
%d 兩位數字形式的日(01, ..., 31)
%e 數字形式的日(1, ..., 31)
%D 英文尾碼形式的日(1st)
%M 英文月(January)
%b 英文縮寫月(Jan)
%m 兩位數字形式的月(01, ..., 12)
%c 數字形式的月(1, ..., 12)
%Y 4位數字形式的年
%y 2位數字形式的年
%j 一年中第幾天,三位數字形式(001, ..., 366)
%U 一年中第幾周,Sunday為周中第一天,第一個Sunday為第一周的開始,兩位數字形式(00, ..., 52)
%u 一年中第幾周,Monday為周中第一天,01-01為第一周的開始,兩位數字形式(00, ..., 52)
% %% 字元%

字元串函數

字元串首字元的下標為1。

函數 作用
CONCAT(v[, ...]) 連接字元串,v也可以是數值
INSERT(str, idx, len, substr) 將str從idx(含)起的len個字元替換為substr
LEFT(str, len) 取左側len個字元
LENGTH(str) 字元串長度
LOWER(str) 轉換成小寫
LPAD(str, len, pad) 使用pad在str左側填充至長度為len
LTRIM(str) 去掉左側空格
REPEAT(str, n) 重覆n次
REPLACE(str, old, new) 使用new替換old
RIGHT(str, len) 取右側len個字元
RPAD(str, len, pad) 使用pad在str右側填充至長度為len
RTRIM(str) 去除右側空格
STRCMP(str1, str2) str1<str2返回-1,str1=str2返回0,str1>str2返回1
SUBSTRING(str, idx, len) 截取str從idx(含)起長度為len的子串
TRIM(str) 去掉兩側空格
UPPER(str) 轉換成大寫

流程函數

函數 作用
IF(value, t, f) 如果value為真則返回t,否則返回f
IFNULL(value, result) 如果value不為NULL則返回value,否則返回result
CASE WHEN expr1 THEN result1 [WHEN ...] [ELSE default] END 根據各表達式的真假返回結果
CASE value WHEN enum1 THEN result1 [WHEN ...] [ELSE default] END value根據各枚舉值返回結果

使用流程函數時註意NULL的情況。

聚合函數

函數 作用
BIT_AND(row) 按位與
BIT_OR(row) 按位或

其他函數

用於資料庫管理的函數:

函數 作用
CURRENT_USER() 當前用戶
DATABASE() 當前資料庫名,同SCHEMA
PASSWORD(str) 加密成系統密碼,長度為41
SCHEMA() 當前資料庫名,同DATABASE
USER() 當前登錄用戶名
VERSION() 當前MySQL版本

用於輔助查詢的函數:

函數 作用
FOUND_ROWS() 上一次查詢返回的行數
LAST_INSERT_ID() 最後插入記錄使用的自增長值。如一次插入多條記錄,則返回第一條記錄使用的自增長值

用於計算的函數:

函數 作用
BIN(value) 二進位形式表示
CRC32(value) CRC32值
HEX(value) 十六進位形式表示
INET_ATON(ip) IP從點分十進位轉換成網路位元組序整數
INET_NTOA(uint) IP從網路位元組序整數轉換成點分十進位
MD5(value) MD5值
SHA1(value) SHA1值

全局變數

變數 作用
CURRENT_TIMESTAMP 當前時間戳

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MySQL知識點總結 一、 MySQL常用命令 啟動MySQL服務:service mysqld start 或 systemctl start mysqld.service 停止MySQL服務:service mysqld stop 或 systemctl stopt mysqld.service ...
  • 1 --普通時間 轉 13 位時間戳 2 SELECT CONVERT(BIGINT,DATEDIFF(MI,'1970-01-01 00:00:00.000', GETUTCDATE())) * 60000 + DATEPART(S,GETUTCDATE()) * 1000 + DATEPART( ...
  • 一、什麼是工作流? 工作流(WorkFlow)就是工作流程的計算模型,即將工作流程中的工作如何前後組織在一起的邏輯和規則在電腦中以恰當的模型進行表示並對其實施計算。工作流要解決的主要問題是:為實現某個業務目標,在多個參與者之間,利用電腦,按某種預定規則自動傳遞。下麵我們以“員工請假的流程”為例, ...
  • 墨天輪資料庫周刊第28期發佈啦,每周1次推送本周資料庫相關熱門資訊、精選文章、乾貨文檔。本周分享 開發者最喜愛的資料庫是什麼?阿裡雲脫口秀爆聊程式員轉型;MySQL update誤操作後進行資料庫恢復;PG流複製踩坑;PG異機歸檔;MySQL架構選型案例;oracle 技能表;Oracle文件損壞處... ...
  • select * from BANK t; DECLARE v_money bank.money%TYPE; BEGIN --簡單執行sql,註意sql字元串不要帶分號結束 EXECUTE IMMEDIATE 'SELECT money FROM bank WHERE id = 5'; --帶參數, ...
  • CREATE OR REPLACE FUNCTION c_to_f (degree NUMBER) RETURN NUMBER IS buffer NUMBER; BEGIN buffer := (degree * 9/5) + 32; RETURN buffer; END; --第一種 前提方法必 ...
  • MySQL8系列新增的密碼插件策略:caching_sha2_password ...
  • 前兩天文章說了海南IT互聯網相關數據提到公司數量很多,但招聘的崗位很少的問題,但由於只是簡單截圖了相關招聘數據做就吐槽招聘數據少。可能數據維度太少、沒做橫向對比,導致看上去不太不太科學、客觀。但該篇文章的結論是否有問題呢? 公司增、稅收增、人員不增的說法是否站得住腳,這篇文章將主流招聘網站的數據全部 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...