久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql常用的函數有哪些

152次閱讀
沒有評論

共計 6297 個字符,預計需要花費 16 分鐘才能閱讀完成。

本篇內容介紹了“mysql 常用的函數有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、數學函數

ABS(x) 返回 x 的絕對值
BIN(x) 返回 x 的二進制(OCT 返回八進制,HEX 返回十六進制)
CEILING(x) 返回大于 x 的最小整數值
EXP(x) 返回值 e(自然對數的底)的 x 次方
FLOOR(x) 返回小于 x 的最大整數值
GREATEST(x1,x2,…,xn) 返回集合中最大的值
LEAST(x1,x2,…,xn) 返回集合中最小的值
LN(x) 返回 x 的自然對數
LOG(x,y) 返回 x 的以 y 為底的對數
MOD(x,y) 返回 x / y 的模(余數)
PI() 返回 pi 的值(圓周率)
RAND() 返回0到1內的隨機值, 可以通過提供一個參數(種子) 使 RAND()隨機數生成器生成一個指定的值。
ROUND(x,y) 返回參數 x 的四舍五入的有 y 位小數的值
SIGN(x) 返回代表數字 x 的符號的值
SQRT(x) 返回一個數的平方根
TRUNCATE(x,y) 返回數字 x 截短為 y 位小數的結果

二、聚合函數(常用于 GROUP BY 從句的 SELECT 查詢中)

AVG(col) 返回指定列的平均值
COUNT(col) 返回指定列中非 NULL 值的個數
MIN(col) 返回指定列的最小值
MAX(col) 返回指定列的最大值
SUM(col) 返回指定列的所有值之和
GROUP_CONCAT(col) 返回由屬于一組的列值連接組合而成的結果

列出每個部門最高薪水的結果,sql 語句如下:

SELECT DEPT, MAX(SALARY) AS MAXIMUM FROM STAFF GROUP BY DEPT

查詢每個部門的總的薪水數
SELECT DEPT, sum(SALARY) AS total FROM STAFF GROUP BY DEPT

具體用法參考:MySQL group by where having 用法詳情  

三、字符串函數

ASCII(char)返回字符的 ASCII 碼值
BIT_LENGTH(str) 返回字符串的比特長度
CONCAT(s1,s2…,sn) 將 s1,s2…,sn 連接成字符串
CONCAT_WS(sep,s1,s2…,sn) 將 s1,s2…,sn 連接成字符串,并用 sep 字符間隔
INSERT(str,x,y,instr) 將字符串 str 從第 x 位置開始,y 個字符長的子串替換為字符串 instr,返

回結果
FIND_IN_SET(str,list) 分析逗號分隔的 list 列表,如果發現 str,返回 str 在 list 中的位置
LCASE(str) 或 LOWER(str) 返回將字符串 str 中所有字符改變為小寫后的結果
LEFT(str,x) 返回字符串 str 中最左邊的 x 個字符
LENGTH(s) 返回字符串 str 中的字符數
LTRIM(str) 從字符串 str 中切掉開頭的空格
POSITION(substr,str) 返回子串 substr 在字符串 str 中第一次出現的位置
QUOTE(str) 用反斜杠轉義 str 中的單引號
REPEAT(str,srchstr,rplcstr) 返回字符串 str 重復 x 次的結果
REVERSE(str) 返回顛倒字符串 str 的結果
RIGHT(str,x) 返回字符串 str 中最右邊的 x 個字符
RTRIM(str) 返回字符串 str 尾部的空格
STRCMP(s1,s2) 比較字符串 s1 和 s2
TRIM(str)去除字符串首部和尾部的所有空格
UCASE(str) 或 UPPER(str) 返回將字符串 str 中所有字符轉變為大寫后的結果
四、日期和時間函數
CURDATE() 或 CURRENT_DATE() 返回當前的日期
CURTIME() 或 CURRENT_TIME() 返回當前的時間
DATE_ADD(date,INTERVAL int keyword) 返回日期 date 加上間隔時間 int 的結果(int 必須按照關鍵

字進行格式化), 如:SELECT 

DATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH);
DATE_FORMAT(date,fmt) 依照指定的 fmt 格式格式化日期 date 值
DATE_SUB(date,INTERVAL int keyword) 返回日期 date 加上間隔時間 int 的結果(int 必須按照關鍵

字進行格式化), 如:SELECT 

DATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH);
DAYOFWEEK(date) 返回 date 所代表的一星期中的第幾天 (1~7)
DAYOFMONTH(date) 返回 date 是一個月的第幾天(1~31)
DAYOFYEAR(date) 返回 date 是一年的第幾天(1~366)
DAYNAME(date) 返回 date 的星期名,如:SELECT DAYNAME(CURRENT_DATE);
FROM_UNIXTIME(ts,fmt) 根據指定的 fmt 格式,格式化 UNIX 時間戳 ts
HOUR(time) 返回 time 的小時值(0~23)
MINUTE(time) 返回 time 的分鐘值(0~59)
MONTH(date) 返回 date 的月份值(1~12)
MONTHNAME(date) 返回 date 的月份名,如:SELECT MONTHNAME(CURRENT_DATE);
NOW() 返回當前的日期和時間
QUARTER(date) 返回 date 在一年中的季度(1~4),如 SELECT QUARTER(CURRENT_DATE);
WEEK(date) 返回日期 date 為一年中第幾周(0~53)
YEAR(date) 返回日期 date 的年份(1000~9999)
一些示例:
獲取當前系統時間:SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());
SELECT EXTRACT(YEAR_MONTH FROM CURRENT_DATE);
SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE);
SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_DATE);
返回兩個日期值之間的差值 (月數):SELECT PERIOD_DIFF(200302,199802);
在 Mysql 中計算年齡:
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), %Y )+0 AS age FROM 

employee;
這樣,如果 Brithday 是未來的年月日的話,計算結果為 0。
下面的 SQL 語句計算員工的絕對年齡,即當 Birthday 是未來的日期時,將得到負值。
SELECT DATE_FORMAT(NOW(), %Y ) – DATE_FORMAT(birthday, %Y) – (DATE_FORMAT(NOW(),

00-%m-%d ) DATE_FORMAT

(birthday, 00-%m-%d)) AS age from employee

五、加密函數

AES_ENCRYPT(str,key) 返回用密鑰 key 對字符串 str 利用高級加密標準算法加密后的結果,調用

AES_ENCRYPT 的結果是一個二進制

字符串,以 BLOB 類型存儲
AES_DECRYPT(str,key) 返回用密鑰 key 對字符串 str 利用高級加密標準算法解密后的結果
DECODE(str,key) 使用 key 作為密鑰解密加密字符串 str
ENCRYPT(str,salt) 使用 UNIX crypt() 函數,用關鍵詞 salt(一個可以惟一確定口令的字符串,

就像鑰匙一樣)加密字符串 str
ENCODE(str,key) 使用 key 作為密鑰加密字符串 str,調用 ENCODE()的結果是一個二進制字符串

,它以 BLOB 類型存儲
MD5() 計算字符串 str 的 MD5 校驗和
PASSWORD(str) 返回字符串 str 的加密版本,這個加密過程是不可逆轉的,和 UNIX 密碼加密過

程使用不同的算法。
SHA() 計算字符串 str 的安全散列算法 (SHA) 校驗和
示例:
SELECT ENCRYPT(root , salt
SELECT ENCODE(xufeng , key
SELECT DECODE(ENCODE( xufeng , key), key #加解密放在一起
SELECT AES_ENCRYPT(root , key
SELECT AES_DECRYPT(AES_ENCRYPT( root , key), key
SELECT MD5(123456
SELECT SHA(123456

六、控制流函數

MySQL 有 4 個函數是用來進行條件操作的,這些函數可以實現 SQL 的條件邏輯,允許開發者將一些應

用程序業務邏輯轉換到數據庫后臺


MySQL 控制流函數:
CASE WHEN[test1] THEN [result1]…ELSE [default] END 如果 testN 是真,則返回 resultN,否

則返回 default
CASE [test] WHEN[val1] THEN [result]…ELSE [default] END 如果 test 和 valN 相等,則返

回 resultN,否則返回 default
IF(test,t,f) 如果 test 是真,返回 t;否則返回 f
IFNULL(arg1,arg2) 如果 arg1 不是空,返回 arg1,否則返回 arg2
NULLIF(arg1,arg2) 如果 arg1=arg2 返回 NULL;否則返回 arg1
這些函數的第一個是 IFNULL(),它有兩個參數,并且對第一個參數進行判斷。如果第一個參數不

是 NULL,函數就會向調用者返回第

一個參數;如果是 NULL, 將返回第二個參數。
如:SELECT IFNULL(1,2), IFNULL(NULL,10), IFNULL(4*NULL, false
NULLIF()函數將會檢驗提供的兩個參數是否相等,如果相等,則返回 NULL,如果不相等,就返回

第一個參數。
如:SELECT NULLIF(1,1),NULLIF(A , B),NULLIF(2+3,4+1);
和許多腳本語言提供的 IF()函數一樣,MySQL 的 IF()函數也可以建立一個簡單的條件測試,這個函

數有三個參數,第一個是要被判斷

的表達式,如果表達式為真,IF()將會返回第二個參數,如果為假,IF()將會返回第三個參數。
如:SELECT IF(1 10,2,3),IF(56 100, true , false
IF()函數在只有兩種可能結果時才適合使用。然而,在現實世界中,我們可能發現在條件測試中

會需要多個分支。在這種情況下,

MySQL 提供了 CASE 函數,它和 PHP 及 Perl 語言的 switch-case 條件例程一樣。
CASE 函數的格式有些復雜,通常如下所示:
CASE [expression to be evaluated]
WHEN [val 1] THEN [result 1]
WHEN [val 2] THEN [result 2]
WHEN [val 3] THEN [result 3]
……
WHEN [val n] THEN [result n]
ELSE [default result]
END
這里,第一個參數是要被判斷的值或表達式,接下來的是一系列的 WHEN-THEN 塊,每一塊的第一個

參數指定要比較的值,如果為真,

就返回結果。所有的 WHEN-THEN 塊將以 ELSE 塊結束,當 END 結束了所有外部的 CASE 塊時,如果前面

的每一個塊都不匹配就會返回 ELSE

塊指定的默認結果。如果沒有指定 ELSE 塊,而且所有的 WHEN-THEN 比較都不是真,MySQL 將會返回

NULL。
CASE 函數還有另外一種句法,有時使用起來非常方便,如下:
CASE
WHEN [conditional test 1] THEN [result 1]
WHEN [conditional test 2] THEN [result 2]
ELSE [default result]
END
這種條件下,返回的結果取決于相應的條件測試是否為真。
示例:
mysql SELECT CASE green
WHEN red THEN stop
WHEN green THEN Go END;
SELECT CASE 9 WHEN 1 THEN a WHEN 2 THEN b ELSE N/A END;
SELECT CASE WHEN (2+2)=4 THEN OK WHEN (2+2)$amp; $gt;4 then= not= ok = end= as= status;
 SELECT Name,IF((IsActive = 1), 已激活 , 未激活 ) AS RESULT FROM UserLoginInfo;
SELECT fname,lname,(math+sci+lit) AS total,
CASE WHEN (math+sci+lit) 50 THEN D
WHEN (math+sci+lit) BETWEEN 50 AND 150 THEN C
WHEN (math+sci+lit) BETWEEN 151 AND 250 THEN B
ELSE A END
AS grade FROM marks;
SELECT IF(ENCRYPT( sue , ts)=upass, allow , deny ) AS LoginResult FROM users WHERE 

uname = sue #一個登陸驗證

七、格式化函數

DATE_FORMAT(date,fmt) 依照字符串 fmt 格式化日期 date 值
FORMAT(x,y) 把 x 格式化為以逗號隔開的數字序列,y 是結果的小數位數
INET_ATON(ip) 返回 IP 地址的數字表示
INET_NTOA(num) 返回數字所代表的 IP 地址
TIME_FORMAT(time,fmt) 依照字符串 fmt 格式化時間 time 值
其中最簡單的是 FORMAT()函數,它可以把大的數值格式化為以逗號間隔的易讀的序列。
示例:
SELECT FORMAT(34234.34323432,3);
SELECT DATE_FORMAT(NOW(), %W,%D %M %Y %r
SELECT DATE_FORMAT(NOW(), %Y-%m-%d
SELECT DATE_FORMAT(19990330, %Y-%m-%d
SELECT DATE_FORMAT(NOW(), %h:%i %p
SELECT INET_ATON(10.122.89.47
SELECT INET_NTOA(175790383);

八、類型轉化函數

為了進行數據類型轉化,MySQL 提供了 CAST()函數,它可以把一個值轉化為指定的數據類型。類型

有:

BINARY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED
示例:
SELECT CAST(NOW() AS SIGNED INTEGER),CURDATE()+0;
SELECT f =BINARY F , f =CAST(F AS BINARY);

九、系統信息函數

DATABASE() 返回當前數據庫名
BENCHMARK(count,expr) 將表達式 expr 重復運行 count 次
CONNECTION_ID() 返回當前客戶的連接 ID
FOUND_ROWS() 返回最后一個 SELECT 查詢進行檢索的總行數
USER() 或 SYSTEM_USER() 返回當前登陸用戶名
VERSION() 返回 MySQL 服務器的版本
示例:
SELECT DATABASE(),VERSION(),USER();
SELECT BENCHMARK(9999999,LOG(RAND()*PI()));# 該例中,MySQL 計算 LOG(RAND()*PI())表達式

“mysql 常用的函數有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-01發表,共計6297字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 乌鲁木齐市| 印江| 新昌县| 揭西县| 临江市| 旬阳县| 铜陵市| 巫山县| 榆中县| 沁源县| 青海省| 文安县| 枣庄市| 门头沟区| 舟曲县| 郑州市| 阳城县| 嫩江县| 田林县| 五常市| 万州区| 景谷| 郎溪县| 宁南县| 安康市| 临城县| 云梦县| 韶关市| 海南省| 嫩江县| 穆棱市| 台安县| 太原市| 开远市| 阿克| 弋阳县| 沛县| 崇信县| 灵台县| 漠河县| 襄城县|