mysql中的內置函數

mysql內置函數列表可以從mysql官方文檔查詢,這里僅分類簡單介紹一些可能會用到的函數。

1 數學函數

abs(x)
pi()
mod(x,y)
sqrt(x)
ceil(x)或者ceiling(x)
rand(),rand(N):返回0-1間的浮點數,使用不同的seed N可以獲得不同的隨機數
round(x, D):四舍五入保留D位小數,D默認為0, 可以為負數, 如round(19, -1)返回20
truncate(x, D):截斷至保留D位小數,D可以為負數, 如trancate(19,-1)返回10
sign(x): 返回x的符號,正負零分別返回1, -1, 0
pow(x,y)或者power(x,y)
exp(x):e^x
log(x):自然對數
log10(x):以10為底的對數
radians(x):角度換弧度
degrees(x):弧度換角度
sin(x)和asin(x):
cos(x)和acos(x):
tan(x)和atan(x):
cot(x):

2 字符串函數

char_length(str):返回str所包含的字符數,一個多字節字符算一個字符
length(str): 返回字符串的字節長度,如utf8中,一個漢字3字節,數字和字母算一個字節
concat(s1, s1, ...): 返回連接參數產生的字符串
concat_ws(x, s1, s2, ...): 使用連接符x連接其他參數產生的字符串
INSERT(str,pos,len,newstr):返回str,其起始于pos,長度為len的子串被newstr取代。
1. 若pos不在str范圍內,則返回原字符串str
2. 若str中從pos開始的子串不足len,則將從pos開始的剩余字符用newstr取代
3. 計算pos時從1開始,若pos=3,則從第3個字符開始替換
lower(str)或者lcase(str):
upper(str)或者ucase(str):
left(s,n):返回字符串s最左邊n個字符
right(s,n): 返回字符串最右邊n個字符
lpad(s1, len, s2): 用s2在s1左邊填充至長度為len, 若s1的長度大于len,則截斷字符串s1至長度len返回
rpad(s1, len, s2):
ltrim(s):刪除s左側空格字符
rtrim(s):
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)或TRIM([remstr FROM] str):從str中刪除remstr, remstr默認為空白字符
REPEAT(str,count):返回str重復count次得到的新字符串
REPLACE(str,from_str,to_str): 將str中的from_str全部替換成to_str
SPACE(N):返回長度為N的空白字符串
STRCMP(str1,str2):若str1和str2相同,返回0, 若str1小于str2, 返回-1, 否則返回1.
SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len),MID(str,pos,len): 獲取特定位置,特定長度的子字符串
LOCATE(substr,str), LOCATE(substr,str,pos),INSTR(str,substr),POSITION(substr IN str): 返回字符串中特定子串的位置,注意這里INSTR與其他函數的參數位置是相反的
REVERSE(str)
ELT(N,str1,str2,str3,...):返回參數strN, 若N大于str參數個數,則返回NULL
FIELD(str,str1,str2,str3,...): 返回str在后面的str列表中第一次出現的位置,若找不到str或者str為NULL, 則返回0
FIND_IN_SET(str,strlist):strlist是由','分隔的字符串,若str不在strlist或者strlist為空字符串,則返回0;若任意一個參數為NULL則返回NULL
MAKE_SET(bits,str1,str2,...): 由bits的作為位圖來選取strN參數,選中的參數用','連接后返回

3 日期和時間函數

CURDATE(), CURRENT_DATE, CURRENT_DATE():用于獲取當前日期,格式為'YYYY-MM-DD'; 若+0則返回YYYYMMDD
UTC_DATE, UTC_DATE():返回當前世界標準時間
CURTIME([fsp]), CURRENT_TIME, CURRENT_TIME([fsp]): 用于獲取當前時間, 格式為'HH:MM:SS' 若+0則返回 HHMMSS
UTC_TIME, UTC_TIME([fsp])
CURRENT_TIMESTAMP, CURRENT_TIMESTAMP([fsp]), LOCALTIME, LOCALTIME([fsp]), SYSDATE([fsp]), NOW([fsp]): 用于獲取當前的時間日期,格式為'YYYY-MM-DD HH:MM:SS',若+0則返回YYYYMMDDHHMMSS
UTC_TIMESTAMP, UTC_TIMESTAMP([fsp])
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date):返回一個unix時間戳('1970-01-01 00:00:00' UTC至今或者date的秒數),這實際上是從字符串到整數的一個轉化過程
FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format):從時間戳返回'YYYY-MM-DD HH:MM:SS' 或者YYYYMMDDHHMMSS,加入format后根據所需的format顯示。
MONTH(date)
MONTHNAME(date)
DAYNAME(date)
DAY(date),DAYOFMONTH(date):1-31或者0
DAYOFWEEK(date):1-7==>星期天-星期六
DAYOFYEAR(date): 1-365(366)
WEEK(date[,mode]):判斷是一年的第幾周,如果1-1所在周在新的一年多于4天,則將其定為第一周;否則將其定為上一年的最后一周。mode是用來人為定義一周從星期幾開始。
WEEKOFYEAR(date):類似week(date,3),從周一開始計算一周。
QUARTER(date):返回1-4
HOUR(time):返回時間中的小時數,可以大于24
MINUTE(time):
SECOND(time):
EXTRACT(unit FROM date):提取日期時間中的要素

    SELECT EXTRACT(YEAR FROM '2009-07-02'); ##2009SELECT EXTRACT(YEAR_MONTH FROM '2009-07-02 01:02:03');##200907SELECT EXTRACT(DAY_MINUTE FROM '2009-07-02 01:02:03');##20102SELECT EXTRACT(MICROSECOND FROM '2003-01-02 10:30:00.000123');##123

TIME_TO_SEC(time)
SEC_TO_TIME(seconds)

TO_DAYS(date): 從第0年開始的天數
TO_SECNDS(expr):從第0年開始的秒數

ADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days),DATE_ADD(date,INTERVAL expr unit)
DATE_SUB(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)
ADDTIME(expr1,expr2)
SUBTIME(expr1,expr2)

    SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');##'2008-01-02 01:01:01.000001'SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');##'03:00:01.999997'

注意:時間日期的加減也可以直接用+/-來進行

    date + INTERVAL expr unitdate - INTERVAL expr unit如:SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND;##'2009-01-01 00:00:00'SELECT INTERVAL 1 DAY + '2008-12-31';##'2009-01-01'SELECT '2005-01-01' - INTERVAL 1 SECOND;##'2004-12-31 23:59:59'

DATE_FORMAT(date,format):
DATEDIFF(expr1,expr2):返回相差的天數
TIMEDIFF(expr1,expr2):返回相隔的時間

4 條件判斷函數

IF(expr1,expr2,expr3):如果expr1不為0或者NULL,則返回expr2的值,否則返回expr3的值
IFNULL(expr1,expr2):如果expr1不為NULL,返回expr1,否則返回expr2
NULLIF(expr1,expr2): 如果expr1=expr2則返回NULL, 否則返回expr2
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END
當compare_value=value時返回result
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
當condition為TRUE時返回result

    SELECT CASE 1 WHEN 1 THEN 'one'WHEN 2 THEN 'two' ELSE 'more' END;##'one'SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;##'true'SELECT CASE BINARY 'B'WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;##NULL

5 系統信息函數

VERSION():返回mysql服務器的版本,是utf8編碼的字符串
CONNECTION_ID():顯示連接號(連接的線程號)
DATABASE(),SCHEMA():顯示當前使用的數據庫
SESSION_USER(), SYSTEM_USER(), USER(), CURRENT_USER, CURRENT_USER():返回當前的用戶名@主機,utf8編碼字符串
CHARSET(str)
COLLATION(str)
LAST_INSERT_ID():自動返回最后一個insert或者update查詢, 為auto_increment列設置的第一個發生的值

6 加密和壓縮函數

PASSWORD(str):這個函數的輸出與變量old_password有關。old_password 在mysql5.6中默認為0。 不同取值的效果如下表

old_password=1時, password(str)的效果與old_password(str)相同,由于其不夠安全已經棄用(5.6.5以后)。
old_password=2時,在生成哈希密碼時會隨機加鹽。

MD5(str):計算MD5 128位校驗和,返回32位16進制數構成的字符串,當str為NULL時返回NULL。可以用作哈希密碼
SHA1(str), SHA(str):計算160位校驗和,返回40位16進制數構成的字符串,當str為NULL時返回NULL。
SHA2(str, hash_length):計算SHA-2系列的哈希方法(SHA-224, SHA-256, SHA-384, and SHA-512). 第一個參數為待校驗字符串,第二個參數為結果的位數(224, 256, 384, 512)
ENCRYPT(str[,salt]): 用unix crypt()來加密str. salt至少要有兩位字符,否則會返回NULL。若未指定salt參數,則會隨機添加salt。

ECODE(crypt_str,pass_str):解密crypt_str, pass_str用作密碼
ENCODE(str,pass_str):用pass_str作為密碼加密str

DES_ENCRYPT(str[,{key_num|key_str}]):用Triple-DES算法編碼str, 這個函數只有在mysql配置成支持ssl時才可用。
DES_DECRYPT(crypt_str[,key_str])

AES_ENCRYPT(str,key_str[,init_vector])
AES_DECRYPT(crypt_str,key_str[,init_vector])

COMPRESS(string_to_compress):返回二進制碼
UNCOMPRESS(string_to_uncompress)

7 聚合函數

若在沒使用group by時使用聚合函數,相當于把所有的行都歸于一組來進行處理。除非特殊說明,一般聚合函數會忽略掉NULL.
AVG([DISTINCT] expr): 返回expr的平均值,distinct選項用于忽略重復值
COUNT([DISTINCT] expr):返回select中expr的非0值個數,返回值為bigint類型
group_concat:連接組內的非空值,若無非空值,則返回NULL

        GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val])

MAX([DISTINCT] expr)
MIN([DISTINCT] expr)

SUM([DISTINCT] expr)
VAR_POP(expr)
VARIANCE(expr):同VAR_POP(expr),但是這是標準sql的一個擴展函數
VAR_SAMP(expr)
STD(expr): 這是標準sql的一個擴展函數
STDDEV(expr):這個函數是為了跟oracle兼容而設置的
STDDEV_POP(expr):這個是sql標準函數

STDDEV_SAMP(expr):樣本標準差

8 格式或類型轉化函數

FORMAT(X,D[,locale]):將數字X轉化成'#,###,###.##'格式,D為保留的小數位數
CONV(N,from_base,to_base):改變數字N的進制,返回值為該進制下的數字構成的字符串
INET_ATON(expr):ip字符串轉數字
INET_NTOA(expr):數字轉ip字符串
CAST(expr AS type):轉換數據類型
CONVERT(expr,type), CONVERT(expr USING transcoding_name): type可以為BINARY[(N)],CHAR[(N)],DATE,DATETIME, DECIMAL[(M[,D])],DECIMAL[(M[,D])],TIME,UNSIGNED [INTEGER]等等。transcoding_name如utf8等等

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

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

相關文章

待整理

CNN 適合處理圖片類輸入數據,單獨的,數據之間沒有關系。 rnn則適合處理序列類數據,視頻幀,語言。 深度神經網絡一般指隱藏層大于2的神經網絡。深層網絡相對于淺層網絡,表達能力更強。僅有一個隱藏層的神經網絡就能擬合…

希爾伯特變換_學習筆記1-傅里葉變換1

最終目標是解微分方程。第一章首先介紹了一般意義下的傅里葉變換,之后逐漸將傅里葉變換的概念抽象化,將變換的定義域進行拓展。最后少量介紹傅里葉變換在偏微分方程中的應用。習題解答是自己寫的,有的不會,有的不知道對不對。傅里…

使用 sitemesh/decorator裝飾器裝飾jsp頁面(原理及詳細配置)

摘要:首先這個Decorator解釋一下這個單詞:“裝飾器”,我覺得其實可以這樣理解,他就像我們用到的Frame,他把每個頁面共有的東西提煉了出來,也可能我們也會用各種各樣的include標簽,將我們的常用頁…

FFPLAY的原理(一)

概要電影文件有很多基本的組成部分。首先,文件本身被稱為容器Container,容器的類型決定了信息被存放在文件中的位置。AVI和Quicktime就是容器的例子。接著,你有一組流,例如,你經常有的是一個音頻流和一個視頻流。&…

安卓開發 新浪微博share接口實現發帶本地圖片的微博

1.微博share接口 在開始之前,我們先看一下要用到的這個接口: 我們這次是要上傳本地圖片,可以很明確的知道,除了要用POST方式提交請求,還要采用multipart/form-data編碼方式。 那么這個multipart/form-data編碼方式是什…

python編寫裝飾器_我也來寫一下python裝飾器

有借用,但原文出處已經找不到了,根據筆記分享一下解釋器的基礎。下面的代碼表示,等待兩秒鐘,輸出‘test is running。現在要求增加統計程序運行時間的功能。等待兩秒鐘,輸出‘test is running,現要求增加統計程序運行時…

VirtualBox安裝Centos6.8出現——E_INVALIDARG (0x80070057)

VirtualBox使用已有的虛擬硬盤出錯: 問題描述:UUID已經存在 Cannot register the hard disk E:\system_iso\centos6.8.vdi {05f096aa-67fc-4191-983d-1ed00fc6cce9} because a hard disk E:\system_iso\centos68_02\centos6.8.vdi with UUID {05f096aa-6…

DFT 與 ATPG綜 述

DFT 可測試性設計 工程會接觸 DFT。需要了解 DFT 知識,但不需要深入。 三種基本的測試(概念來自參考文檔): 邊界掃描測試:Boundary Scan Test: 測試目標是 IO-PAD,利用 JTAG 接口互連以方便 測試。&#x…

非線性動力學_非線性動力學特輯 低維到高維的聯通者

序言: 本文將以維度為主線, 帶量大家進入非線性動力學的世界。 文章數學部分不需要全部理解, 理解思維方法為主非線性動力學,是物理學的思維進入傳統方法所不能解決的問題的一座豐碑。它可以幫助我們理解不同復雜度和時間空間尺度…

Go語言channel與select原理

本文會嘗試解釋 go runtime 中 channel 和 select 的具體實現,部分內容來自 gophercon2017。Go版本為1.8.3channel 第一部分講述一下 channel 的用法。channel 可以看做一個隊列,用于多個goroutine之間的通信,例如下面的例子,一個…

Xadmin添加用戶小組件出錯

環境: Python 3.5.6 Django 2.1 Xadmin 原因: render函數在django2.1上有變化 解決方案: 1.在Python終端輸入命令help(xadmin) 查看xadmin安裝位置 得到如下輸出 FILE/root/anaconda3/envs/learndjango/lib/python3.5/site-packages/xad…

成本預算的四個步驟_全網推廣步驟有哪些?

全網推廣的步驟是什么?一般來說,搜索引擎優化是大多數中小企業常用的推廣方法。主要是通過對一些搜索引擎的排名來提高網站的曝光率,從而更好的提高自己網站的流量,從而更好的實現互聯網層面的銷售。接下來,讓我們學習…

undefined reference to `std::cout'等錯誤

(1)gcc和g都是GNU(組織)的一個編譯器。 (2)后綴名為.c的程序和.cpp的程序g都會當成是c的源程序來處理。而gcc不然,gcc會把.c的程序處理成c程序。 (3)對于.cpp的程序,編譯可以用gcc/g…

FFPLAY的原理(二)

關于包Packets的注釋從技術上講一個包可以包含部分或者其它的數據,但是ffmpeg的解釋器保證了我們得到的包Packets包含的要么是完整的要么是多種完整的幀。現在我們需要做的是讓SaveFrame函數能把RGB信息定稿到一個PPM格式的文件中。我們將生成一個簡單的PPM格式文件…

python生成requirements.txt的兩種方法

python項目如何在另一個環境上重新構建項目所需要的運行環境依賴包? 使用的時候邊記載是個很麻煩的事情,總會出現遺漏的包的問題,這個時候手動安裝也很麻煩,不能確定代碼報錯的需要安裝的包是什么版本。這些問題,requi…

node.js 安裝使用http-server

node.js npm全局安裝了http-server后我該怎么使用它?我在它的安裝目錄下創建了inde.html,瀏覽器localhost:8080可以訪問,那我的項目需要放在它的安裝目錄下?還是需要在我的項目下配置什么或者使用什么指令啟動它?我在我…

D - 卿學姐與魔法

卿學姐與魔法 Time Limit: 1200/800MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status“你的膜法也救不了你 在去拯救公主的道路上,卿學姐披荊斬棘,刀刃早已銹跡斑斑。 一日卿學姐正在為武器的問題發愁,碰到了正…

python對excel表統計視頻教程_Python實現對excel文件列表值進行統計的方法

本文實例講述了Python實現對excel文件列表值進行統計的方法。分享給大家供大家參考。具體如下:#!/usr/bin/env python#codinggbk#此PY用來統計一個execl文件中的特定一列的值的分類import win32com.clientfilenameraw_input("請輸入要統計文件的詳細地址&#…

mooc后臺管理系統設計

摘 要 本設計采用Python中的Django框架實現Mooc后臺管理界面設計,django是一個完整的開源web開源框架,使用起來能夠快速的搭建你想要的網站,由于django自帶后臺管理系統,本設計中后臺管理模板采用功能更加強大的Xadmin實現。數據庫部分采用mysql5.7,由于django中有自帶封裝的數…

DirectShow系統初級指南

流媒體的處理,以其復雜性和技術性,一向廣受工業界的關注。特別伴隨著因特網的普及,流媒體在網絡上的廣泛應用,怎樣使流媒體的處理變得簡單而富有成效逐漸成為了焦點問題。選擇一種合適的應用方案,事半功倍。此時&#…