1. 程式人生 > >mysql中的內建函式

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'); ##2009
    SELECT EXTRACT(YEAR_MONTH FROM '2009-07-02 01:02:03');##200907
    SELECT EXTRACT(DAY_MINUTE FROM '2009-07-02 01:02:03');##20102
    SELECT 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 unit
    date - 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。 不同取值的效果如下表
865265-20160224150201724-1500361171.png
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等等

相關推薦

MySQL 常用函式與所有函式

MySQL 常用內建函式 【數值函式】 Abs(X) //絕對值abs(-10.9) = 10 Format(X,D) //格式化千分位數值format(1234567.456, 2) =1,234,567.46 Ceil(X) //向上取整ceil(10.1) = 11 Floor(X) //

python函式any()與all()的用法

python中內建函式all()和any()的區別 原文:https://blog.csdn.net/quanqxj/article/details/78531856 all(x) 是針對x物件的元素而言,如果all(x)引數x物件的所有元素不為0、”、False或者x為空物件,則返回True,

python函式isinstance的用法

Opencv學堂 http://mp.weixin.qq.com/s?__biz=MzA4MDExMDEyMw==&mid=100000109&idx=1&sn=7540b49e869c3e27f87c84f6f3dfe9a8&chksm

mysql常用函式與所有函式

  MySQL資料庫提供了很多函式包括: 數學函式;字串函式;日期和時間函式;條件判斷函式;系統資訊函式;加密函式;格式化函式;一、數學函式   數學函式主要用於處理數字,包括整型、浮點數等。 函式 作用 ABS(x) 返回x的絕對值   SELECT ABS(-1) -- 返回1 CEIL(x),CE

mysql】-函式和預處理語句

內建函式,如果能通過mysql內建函式對增刪改查的資料進行處理的話,就可以省去程式碼迴圈去一條一條的去設定了。 字串函式 函式註釋內容 concat(string2 [......]) 連線字串 lc

Python3.6.x函式總結

# -*- coding:utf-8 -*- """ abs() dict() help() min() setattr() all() dir()

mysql函式清除資料的空格

Mysql有什麼辦法批量去掉某個欄位字元中的空格   Mysql有什麼辦法批量去掉某個欄位字元中的空格?不僅是字串前後的空格,還包含字串中間的空格,答案是 replace,使用mysql自帶的 replace 函式,另外

Mysql 使用 FIND_IN_SET 函式 的情景

有這樣的一個場景,商品與類別,一個商品可能可以分類到幾個類別中,假設商品數量比較大,所有類別的種類也比較多, 那麼建立商品與類別的關聯關係如果是中間表建立關係的話,可能的表資料據時最大可能是 商品總數量*總類別數量的笛卡兒積。或者另一種方式就是在商品表中增加一個類別的欄位,這個欄位可以儲存逗號分隔

關於Oracle的一些函式MySQL的使用(row_number() over(partition by xxx order by xxx))

Oracle中:sys_guid():根據時間和機器碼生成全球唯一的序列號;  MySQL中為UUID()  Oracle中:nvl(s,1):s不為null則輸出s,否則輸出1 ; MySQL中為IFNULL(s,1) Oracle中:sysdate timestamp 標準時

mysql函式

mysql內建函式列表可以從mysql官方文件查詢,這裡僅分類簡單介紹一些可能會用到的函式。 1 數學函式 abs(x) pi() mod(x,y) sqrt(x) ceil(x)或者ceiling(x) rand(),rand(N):返回0-1間的浮點數,使用不同的seed

Python apply 函式(關鍵詞:Python/函式/apply)

>>> apply <built-in function apply> >>> def a(): ... print 'i am a' ... >>> apply(a) i am a >>> de

day29 類函式方法 __str__ __repr__ __call__ isinstance() issubclass()

__str__()__repr__()__len__()str() 轉字串repr()   讓字元原形畢露的方法len() 計算長度 內建的方法很多,但是並不是全部都在object中,比如len(),__len__(),比如說數字,時間,還有物件都是無法計算長度 1 # __del

python類函式

__init__():__init__方法在類的一個物件被建立時,馬上執行。這個方法可以用來對你的物件做一些你希望的初始化。注意,這個名稱的開始和結尾都是雙下劃線。程式碼例子: #!/usr/bin/python# Filename: class_init.pyclass Perso

Python的max以及min: 樸素函式驚豔的一面

Python的max以及min python3.7 文件: https://docs.python.org/3/library/functions.html#max https://docs.python.org/3/library/functions.html#min http

Unity Shader的座標空間與轉換矩陣函式

模型空間(model space)也稱為物件空間(object space)或區域性空間(local space)是指以模型原點為原點的座標系。 世界空間(world space)也稱全域性空間(global space)是以世界原點為原點的座標系,世界座標也就是Unity3D裡的絕對座標。 觀

GLSL(著色器語言)函式

x*y: 如果x和y都是向量,那麼該運算子進行的是逐分量的相乘計算;如果是矩陣相乘,那麼該運算子會返回一個線性相乘(線性代數中正常的矩陣乘法)的矩陣,而不是一個逐分量的相乘結果(如果想得到的是逐分量的相乘結果,那就需要使用matrixCompMult函式)。 dot(x,y

python的關鍵字---3(函式

內建函式 # 1 range(起始位置,終止位置,步長) # range(終止位置) # range(起始,終止位置) # range(起始,終止,步長) # range(5) [0,4] [0,5) # range(1,5) [1,4] [1,5) # rang

keras的多種損失函式

        詳細講解 keras中的損失函式         mean_squared_error      

30.面向物件常用函式與過載函式

 內建函式:類中特殊功能 __init__(self):      ###為例項物件賦值      1,可以沒有這個函式 例項沒資料      2,資料初始化函式        

python的filter, map函式

filter, map內建函式 filter >>> a = filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) >>> a <filter object at 0x7f