MySQL內置函數

22. database函數數據庫

格式:database()函數

功能:返回當前數據庫的名字ui

示例:編碼




21. current_user函數spa

格式:current_user()code

功能:返回當前鏈接的帳號名ci

返回值:'user_name'@'host_name'字符串

等價:CURRENT_USERit

示例:ast




20. to_days函數

格式:to_days(date)

功能:返回日期對應的天數,計算從0000-00-00開始通過的天數

參數:date類型的日期值,MySQL會自動將兩位數的年份轉換成四位數的年份,即「95-08-25」和「950825」等價於「1995-08-25」

說明:date不可爲1582年以前的日期

示例:






19. current_date函數

格式:current_date()

功能:返回當前日期

返回值:字符串上下文中返回"YYYY-MM-DD";數字上下文中返回"YYYYMMDD"

等價:CURDATE() CURRENT_DATE

示例:




18. floor函數

格式:floor(X)

功能:返回不大於X的最大整數

示例:




17. rand函數

格式:rand(N)

功能:返回一個隨機浮點數,範圍 [0, 1)

參數:N爲隨機數種子,可省略

◇ 若N爲常量,則在執行前只初始化一次隨機數種子

◇ 若N爲很是量,例如字段名,則每次調用rand()時都用相應的值初始化一次種子


說明:

① 若N相同,則生成的隨機數都同樣

② 要獲取 [i, j)之間的一個隨機整數,可使用floor(i + rand() * (j-i))

③ 當rand()用在where子句時,每行計算一次


示例:

獲取 [7, 12)的隨機整數




16. right函數

格式:right(str, len)

功能:返回字符串str右側前len個字符

示例:




15. left函數

格式:left(str, len)

功能:返回字符串str左側前len個字符

示例:




14. convert函數

格式:convert(str USING encode)

功能:將字符串「str」轉換爲「encode」編碼

參數:「encode」爲MySQL對應字符集的名字

示例:select convert("abc" USING utf8);


格式:convert(expr, type)

功能:將expr轉換爲type類型的結果

示例:select convert(1/3, decimal(4, 3));



13. cast函數

等同於convert(expr, type)



12. date_add函數

格式:date_add(time, INTERVAL expr unit)

功能:執行日期計算

參數:

time 起始時間,可爲date或datetime類型

expr 間隔時間,將被加到time

unit 指定expr的單位

返回值:

① 如下狀況,返回NULL

    ◇ 「time」爲非法日期,如「2006-07-00」

    ◇ 「time」格式非法,如「201704-30」

 如下狀況,返回datetime

    ◇ 「time爲datetime

    ◇ time爲date,「unit」使用了HOURS「MINUTES」或「SECONDS

 其它狀況下,返回date


注意事項:

① 若expr對於unit來講過短,則高位補0

即 INTERVAL "01:45" MINUTE_MICROSECOND 等價於00:01.000045 0分1秒45微秒

② expr被視做字符串,所以爲expr指定非字符串值時,須要當心

即 INTERVAL 6/4 HOUR_MINUTE 等價於 INTERVAL 1.5000 HOUR_MINUTE,即1小時5000分鐘

解決辦法:使用CAST進行轉換,INTERVAL CAST(6/4 AS DECIMAL(3, 1)) HOUR_MINUTE 


說明:

月份自動轉換,即date_add("2017-04-29", INTERVAL 2 DAY),結果爲"2017-05-01"


等價

等同於time」+ INTERVAL expr unit

INTERVAL expr unit 能夠和time」互換位置,即:INTERVAL expr unit +time


unit取值和expr格式,對應關係




11. date_sub函數

參考date_add


等價

等同於time」- INTERVAL expr unit

INTERVAL expr unit不能放在減號左側,由於從時間區間減值,沒有意義



10. unhex函數

格式:unhex(str)

功能:將十六進制字符串還原爲原始數據

說明:對於字符串參數str,unhex(str)將參數中的每對字符當作兩個十六進制數,並將其轉換爲由該數表示的字節。返回值是二進制字符串

返回值:成功返回二進制字符串;若參數中有非法字符,則返回NULL

示例:




9. hex函數

格式:hex(binary_data)

功能:使用十六進制字符串來表示二進制數據

說明:hex將binary_data中的每一個字節,都轉化成對應的兩位十六進制值的字符串形式

參數:binary_data可爲任意類型的數據,如字符串和數字

返回值:返回十六進制字符串

示例:


由於字符"a"對應的十六進制值爲0x61,"b"=0x62,"c"=63,故字符串"abc"的十六進制字符串爲"616263"


由於整數255的十六進制值爲0xff,故整數255的十六進制字符串爲"FF"


由於二進制數b'01101101'的十六進制值爲0x6d,故二進制數b'01101101'的十六進制字符串爲"6D"


由於十六進制數x'2bfe'的十六進制值爲0x2BFE,故十六進制數x'2bfe'的十六進制字符串爲"2BFE"



8. conv函數

格式:conv(N, from_base, to_base)

功能:數字的進制轉換

參數:

N 原始數字,可爲整數或內容爲整數的字符串

from_base 原進制

to_base 目標進制

返回值:成功返回轉化後結果的字符串表示,失敗返回NULL

示例:




7. length函數

格式:length(arg)

功能:返回字符串佔用的字節數

參數:參數可爲字符串字面值,或字符串類型的字段名



6. char_length函數

格式:char_length(arg)

功能:返回字符串中的字符個數

參數:參數可爲字符串字面值,或字符串類型的字段名



5. bit_length函數

格式:bit_length(arg)

功能:返回字符串佔用的位數

參數:參數可爲字符串字面值,或字符串類型的字段名



4. max函數

格式:max(FieldName)

功能:獲取字段的最大值

示例:




3. min函數

格式:min(FieldName)

功能:獲取字段的最小值

示例:




2. replace函數

格式:replace(str, from, to)

功能:將字符串str中的全部子串from替換爲子串to

例如:

獲取tb_user_device表中的guid, chns字段,同時將chns字段中的子串"nm":""刪除

select guid, replace(chns, concat('"nm":""'), '') from tb_user_device;



1. concat函數

格式:concat(str1, str2...)

功能:返回由各參數首尾鏈接而成的字符串,參數可爲字段名

例如:

查詢chns字段包含「"nm":"xxx」的記錄數,「xxx」爲同一記錄中guid的字段值

select count(*) from tb_user_device where chns like concat('%"nm":"', guid, '%');  

相關文章
相關標籤/搜索