一、數學函數
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) 返回由屬於一組的列值連接組合而成的結果
三、字符串函數
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必須按照關鍵字進行格式化),如:SELECTDATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH);
DATE_FORMAT(date,fmt) 依照指定的fmt格式格式化日期date值
DATE_SUB(date,INTERVAL int keyword) 返回日期date加上間隔時間int的結果(int必須按照關鍵字進行格式化),如:SELECTDATE_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)
一些示例:
獲取當前系統時間:
?
1
2
3
4
|
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 );
|
返回兩個日期值之間的差值(月數):
?
1
|
SELECT PERIOD_DIFF(200302,199802);
|
在Mysql中計算年齡:
?
1
|
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y' )+0 AS age FROM employee;
|
這樣,如果Brithday是未來的年月日的話,計算結果爲0。
下面的SQL語句計算員工的絕對年齡,即當Birthday是未來的日期時,將得到負值。
?
1
|
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) 使用UNIXcrypt()函數,用關鍵詞salt(一個可以惟一確定口令的字符串,就像鑰匙一樣)加密字符串str
ENCODE(str,key) 使用key作爲密鑰加密字符串str,調用ENCODE()的結果是一個二進制字符串,它以BLOB類型存儲
MD5() 計算字符串str的MD5校驗和
PASSWORD(str) 返回字符串str的加密版本,這個加密過程是不可逆轉的,和UNIX密碼加密過程使用不同的算法。
SHA() 計算字符串str的安全散列算法(SHA)校驗和
示例:
?
1
2
3
4
5
6
7
|
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()將會返回第三個參數。
如:SELECTIF(1<10,2,3),IF(56>100,'true','false');
IF() 函數在只有兩種可能結果時才適合使用。然而,在現實世界中,我們可能發現在條件測試中會需要多個分支。在這種情況下,MySQL提供了CASE函數,它和PHP及Perl語言的switch-case 條件例程一樣。
CASE函數的格式有些複雜,通常如下所示:
?
1
2
3
4
5
6
7
8
|
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函數還有另外一種句法,有時使用起來非常方便,如下:
?
1
2
3
4
5
|
CASE
WHEN [conditional test 1] THEN [result 1]
WHEN [conditional test 2] THEN [result 2]
ELSE [ default result]
END
|
這種條件下,返回的結果取決於相應的條件測試是否爲真。
示例:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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)<>4 THEN 'not OK' END ASSTATUS;
SELECT Name ,IF((IsActive = 1), '已激活' , '未激活' ) AS RESULT FROMUserLoginInfo;
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 LoginResultFROM 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() 函數,它可以把大的數值格式化爲以逗號間隔的易讀的序列。
示例:
?
1
2
3
4
5
6
7
|
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
示例:
?
1
2
|
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服務器的版本
示例:
?
1
2
|
SELECT DATABASE (),VERSION(), USER ();
SELECTBENCHMARK(9999999,LOG(RAND()*PI()));#該例中,MySQL計算LOG(RAND()*PI())表達式9999999次。
|
另外一篇博文
MySQL數據庫中提供了很豐富的函數。MySQL函數包括數學函數、字符串函數、日期和時間函數、條件判斷函數、系統信息函數、加密函數、格式化函數等。通過這些函數,可以簡化用戶的操作。例如,字符串連接函數可以很方便的將多個字符串連接在一起。在這一講中將講解的內容包括: 數學函數
字符串函數
日期和時間函數
條件判斷函數
系統信息函數
加密函數
格式化函數
MySQL函數是MySQL數據庫提供的內部函數。這些內部函數可以幫助用戶更加方便的處理表中的數據。本小節中將簡單介紹MySQL中包含哪幾類函數,以及這幾類函數的的使用範圍和作用。MySQL函數包括數學函數、字符串函數、日期和時間函數、條件判斷函數、系統信息函數、加密函數等。SELECT語句及其條件表達式都可以使用這些函數。同時,INSERT 、UPDATE、DELECT語句及其條件表達式也可以使用這些函數。例如,表中的某個數據是負數,現在需要將這個數據顯示爲正數。這就可以使用絕對值函數。從上面可以知道,MySQL函數可以對錶中數據進行相應的處理,以便得到用戶希望得到的數據。這些函數可以使MySQL數據庫的功能更加強大。
一、數學函數
數學函數是MySQL中常用的一類函數。主要用於處理數字,包括整型、浮點數等。數學函數包括絕對值函數、正弦函數、餘弦函數、獲取隨機數的函數等。
ABS(X):返回X的絕對值
select ABS(-32);
MOD(N,M)或%:返回N被M除的餘數。
select MOD(15,7);
select 15 % 7;
FLOOR(X):返回不大於X的最大整數值。
select FLOOR(1.23);
select FLOOR(-1.23);
CEILING(X):返回不小於X的最小整數值。
select CEILING(1.23);
select CEILING(-1.23);
ROUND(X) :返回參數X的四捨五入的一個整數。
select ROUND(1.58);
select ROUND(-1.58);
二、字符串函數
ASCII(str):返回字符串str的最左面字符的ASCII代碼值。如果str是空字符串,返回0。如果str是NULL,返回NULL。
select ASCII('2');
select ASCII(2);
select ASCII('dx')
CONCAT(str1,str2,...):返回來自於參數連結的字符串。如果任何參數是NULL,返回NULL。可以有超過2個的參數。一個數字參數被變換爲等價的字符串形式。
select CONCAT('My', 'S', 'QL');
select CONCAT('My', NULL, 'QL');
select CONCAT(14.3);
LENGTH(str):返回字符串str的長度。
select LENGTH('text');
LOCATE(substr,str):返回子串substr在字符串str第一個出現的位置,如果substr不是在str裏面,返回0.
select LOCATE('bar', 'foobarbar');
select LOCATE('xbar', 'foobar');
INSTR(str,substr):返回子串substr在字符串str中的第一個出現的位置。
select INSTR('foobarbar', 'bar');
select INSTR('xbar', 'foobar');
LEFT(str,len):返回字符串str的最左面len個字符。
select LEFT('foobarbar', 5);
RIGHT(str,len):返回字符串str的最右面len個字符。
select RIGHT('foobarbar', 4);
SUBSTRING(str,pos):從字符串str的起始位置pos返回一個子串。
select SUBSTRING('Quadratically',5);
TRIM(str):返回字符串str,所有前綴或後綴被刪除了。
select TRIM(' bar ');
LTRIM(str):返回刪除了其前置空格字符的字符串str。
select LTRIM(' barbar');
RTRIM(str):返回刪除了其拖後空格字符的字符串str。
select RTRIM(‘barbar ’);
REPLACE(str,from_str,to_str):返回字符串str,其字符串from_str的所有出現由字符串to_str代替。
select REPLACE('www.mysql.com', 'w', 'Ww');
REPEAT(str,count):返回由重複countTimes次的字符串str組成的一個字符串。如果count <= 0,返回一個空字符串。如果str或count是NULL,返回NULL。
select REPEAT('MySQL', 3);
REVERSE(str):返回顛倒字符順序的字符串str。
select REVERSE('abc');
INSERT(str,pos,len,newstr):返回字符串str,在位置pos起始的子串且len個字符長的子串由字符串newstr代替。
select INSERT(‘whatareyou', 5, 3, ‘is');
三、日期和時間函數
DAYOFWEEK(date):返回日期date的星期索引(1=星期天,2=星期一, …7=星期六)。
select DAYOFWEEK('1998-02-03');
select DAYOFWEEK(now());
WEEKDAY(date):返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
select WEEKDAY('1997-11-05');
DAYOFMONTH(date):返回date的月份中的日期,在1到31範圍內。
select DAYOFMONTH('1998-02-03');
DAYOFYEAR(date):返回date在一年中的日數, 在1到366範圍內。
select DAYOFYEAR('1998-02-03');
MONTH(date):返回date的月份,範圍1到12。
select MONTH('1998-02-03');
DAYNAME(date):返回date的星期名字。
select DAYNAME("1998-02-05");
MONTHNAME(date) :返回date的月份名字。
select MONTHNAME("1998-02-05");
QUARTER(date):返回date一年中的季度,範圍1到4。
select QUARTER('98-04-01');
WEEK(date,first):對於星期天是一週的第一天的地方,有一個單個參數,返回date的週數,範圍在0到52。2個參數形式WEEK()允許你指定星期是否開始於星期天或星期一。如果第二個參數是0,星期從星期天開始,如果第二個參數是1,從星期一開始。
select WEEK('2009-02-20');
select WEEK('2009-02-20',0);
select WEEK('2009-02-20',1);
YEAR(date):返回date的年份,範圍在1000到9999。
select YEAR('98-02-03');
HOUR(time):返回time的小時,範圍是0到23。
select HOUR('10:05:03');
MINUTE(time):返回time的分鐘,範圍是0到59。
select MINUTE('98-02-03 10:05:03');
SECOND(time):回來time的秒數,範圍是0到59。
select SECOND('10:05:03');
DATE_ADD(date,INTERVAL expr type) ,進行日期增加的操作,可以精確到秒
DATE_SUB(date,INTERVAL expr type) ,進行日期減少的操作,可以精確到秒
SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
SELECT INTERVAL 1 DAY + "1997-12-31";
SELECT "1998-01-01" - INTERVAL 1 SECOND;
SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL 1 SECOND);
SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL "1:1" MINUTE_SECOND);
SELECT DATE_SUB("1998-01-01 00:00:00", INTERVAL "1 1:1:1" DAY_SECOND);
SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
CURRENT_DATE:以‘YYYY-MM-DD’或YYYYMMDD格式返回今天日期值,取決於函數在一個字符串還是數字上下文被使用。
select CURDATE();
CURRENT_TIME:以‘HH:MM:SS’或HHMMSS格式返回當前時間值
select CURTIME();
NOW():以‘YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS格式返回當前的日期和時間
select NOW();
四、控制流程函數
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
在第一個方案的返回結果中, value=compare-value。而第二個方案的返回結果是第一種情況的真實結果。如果沒有匹配的結果值,則返回結果爲ELSE後的結果,如果沒有ELSE 部分,則返回值爲 NULL。
SELECT CASE 11 WHEN 1 THEN 'one'
WHEN 2 THEN 'two' ELSE 'more' END;
SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
SELECT CASE BINARY 'B'
WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的返回值爲expr2; 否則返回值則爲 expr3。IF() 的返回值爲數字值或字符串值,具體情況視其所在語境而定。
SELECT IF(1>2,2,3);
SELECT IF(1<2,'yes ','no');
SELECT IF(STRCMP('test','test1'),'no','yes');
Strcmp(str1,str2):如果str1>str2返回1,str1=str2反回0,str1<str2返回-1)
STRCMP(expr1,expr2)
如果字符串相同,STRCMP()返回0,如果第一參數根據當前的排序次序小於第二個,返回-1,否則返回1。
select STRCMP('text', 'text2');
select STRCMP('text2', 'text');
select STRCMP('text', 'text');
五、系統信息函數
系統信息函數用來查詢MySQL數據庫的系統信息。例如,查詢數據庫的版本,查詢數據庫的當前用戶等。本小節將詳細講解系統信息函數的作用和使用方法。
獲取MySQL版本號、連接數、數據庫名的函數
VERSION()函數返回數據庫的版本號;
CONNECTION_ID()函數返回服務器的連接數,也就是到現在爲止MySQL服務的連接次數;
DATABASE()和SCHEMA()返回當前數據庫名。
獲取用戶名的函數
USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()和CURRENT_USER這幾個函數可以返回當前用戶的名稱。
獲取字符串的字符集和排序方式的函數
CHARSET(str)函數返回字符串str的字符集,一般情況這個字符集就是系統的默認字符集;COLLATION(str)函數返回字符串str的字符排列方式。
獲取最後一個自動生成的ID值的函數
LAST_INSERT_ID()函數返回最後生成的AUTO_INCREMENT值。
六、加密函數
加密函數是MySQL中用來對數據進行加密的函數。因爲數據庫中有些很敏感的信息不希望被其他人看到,就應該通過加密方式來使這些數據變成看似亂碼的數據。例如用戶的密碼,就應該經過加密。本小節將詳細講解加密函數的作用和使用方法。
下面是各種加密函數的名稱、作用和使用方法。
加密函數PASSWORD(str)
PASSWORD(str)函數可以對字符串str進行加密。一般情況下,PASSWORD(str)函數主要是用來給用戶的密碼加密的。下面使用PASSWORD(str)函數爲字符串“abcd”加密。
加密函數MD5(str)
MD5(str)函數可以對字符串str進行加密。MD5(str)函數主要對普通的數據進行加密。下面使用MD5(str)函數爲字符串“abcd”加密。
加密函數ENCODE(str,pswd_str)
ENCODE(str,pswd_str)函數可以使用字符串pswd_str來加密字符串str。加密的結果是一個二進制數,必須使用BLOB類型的字段來保存它。
解密函數
DECODE(crypt_str,pswd_str)函數可以使用字符串pswd_str來爲crypt_str解密。crypt_str是通過ENCODE(str,pswd_str)加密後的二進制數據。字符串pswd_str應該與加密時的字符串pswd_str是相同的。下面使用DECODE(crypt_str,pswd_str)爲ENCODE(str,pswd_str)加密的數據解密。
七、其它函數
格式化函數FORMAT(x,n)
FORMAT(x,n)函數可以將數字x進行格式化,將x保留到小數點後n位。這個過程需要進行四捨五入。例如FORMAT(2.356,2)返回的結果將會是2.36;FORMAT(2.353,2)返回的結果將會是2.35。下面使用FORMAT(x,n)函數來講235.3456和235.3454進行格式化,都保留到小數點後3位。
不同進制的數字進行轉換的函數
ASCII(s)返回字符串s的第一個字符的ASCII碼;BIN(x)返回x的二進制編碼;HEX(x)返回x的十六進制編碼;OCT(x)返回x的八進制編碼;CONV(x,f1,f2)將x從f1進制數變成f2進制數。
和下面的
IP地址與數字相互轉換的函數
INET_ATON(IP)函數可以將IP地址轉換爲數字表示;INET_NTOA(n)函數可以將數字n轉換成IP的形式。其中,INET_ATON(IP)函數中IP值需要加上引號。這兩個函數互爲反函數。
加鎖函數和解鎖函數
GET_LOCT(name,time)函數定義一個名稱爲nam、持續時間長度爲time秒的鎖。如果鎖定成功,返回1;如果嘗試超時,返回0;如果遇到錯誤,返回NULL。RELEASE_LOCK(name)函數解除名稱爲name的鎖。如果解鎖成功,返回1;如果嘗試超時,返回0;如果解鎖失敗,返回NULL;IS_FREE_LOCK(name)函數判斷是否使用名爲name的鎖。如果使用,返回0;否則,返回1。
重複執行指定操作的函數
BENCHMARK(count,expr)函數將表達式expr重複執行count次,然後返回執行時間。該函數可以用來判斷MySQL處理表達式的速度。
改變字符集的函數
CONVERT(s USING cs)函數將字符串s的字符集變成cs
CAST(x AS type)和CONVERT(x,type)這兩個函數將x變成type類型。這兩個函數只對BINARY、CHAR、DATE、DATETIME、TIME、SIGNED INTEGER、UNSIGNED INTEGER這些類型起作用。但兩種方法只是改變了輸出值的數據類型,並沒有改變表中字段的類型。 原文地址:https://blog.csdn.net/sinat_38899493/article/details/78710482
|