字符串相關函數(shù)
1 ASCII(String)
返回字符串第一個字母的ASCII碼:
SELECT ASCII('A');
SELECT ASCII('AB');
這兩條語句都是輸出65裸删!
2 BIN(long)
返回整數(shù)的二進制形式的字符串
SELECT BIN(15);
輸出1111
3 CHAR(int…)
將每個整型轉換成對應的字符
SELECT CHAR(65,66,67,68,69);
輸出ABCDE
SELECTCHAR('65','66','67','68','69');
參數(shù)為字符串時输钩,會被轉換成整型爷辱,然后再轉換成對應字符守谓。
4 CHAR_LENGTH(String)
返回字符串的長度当悔!’中國’這個字符串長度為2贤旷〉话玻’ab’長度為2!不分中英文嗽桩!
SELECT CHAR_LENGTH('a中b國c');
輸出5
5 CHARACTER_LENGTH(String)
與CHAR_LENGTH()完全相同岳守!
6 CONCAT(String…)
將多個字符串連接成一個字符串
SELECT CONCAT('My', 'SQL');
輸出MySQL
7 CONCAT_WS(separator,String…)
使用第一個參數(shù)字符串,把其他參數(shù)字符串連接碌冶。
SELECT CONCAT_WS('-','A','B','C');
輸出A-B-C
8 CONV(int n, intradix1, int radix2)
把n從radix1進制轉換成radix2進制湿痢。
SELECT CONV('F', 16, 10);
一個個參數(shù)F是一個數(shù)值,第二個參數(shù)16說明F是16進制數(shù)值,第三個參數(shù)10說明要把F轉換成10進制譬重,所以輸出15拒逮。
9 ELT(N, str1,str2, str3…)
N是一個整數(shù),若N為1臀规,則返回str1滩援,若N為2,則返回str2塔嬉,以此類推
SELECT ELT(3, 'a', 'b', 'c','d', 'e');
輸出c
10 EXPORT_SET(intbits, String on, String off, Strring separator, int length)
bits是一個整數(shù)玩徊,把bits轉換成二進制,其中1用on替換邑遏,0用off轉換佣赖,使用separator來連接每個二進制位恰矩,length是指定從左到右顯示幾位记盒。如果沒有指定length,那么會在右邊補足到64位外傅。
SELECT EXPORT_SET(13, 'a', 'b','-', 4);
輸出a-b-a-a纪吮,因為13的二進制是1011,其中1用a替換萎胰,而0用b替換碾盟。
SELECT EXPORT_SET(13, 'a', 'b','-', 3);
輸出a-b-a
SELECT EXPORT_SET(13, 'a', 'b','-', 10);
輸出a-b-a-a-b-b-b-b-b-b,因為13只有4位技竟,而length為10冰肴,那么會在右邊補足到10位,都是用0補榔组,所以才會多出來6個b熙尉。
流程控制函數(shù)
1 CASE value WHEN v1 THEN expr1 WHEN v2 THEN expr2 …. END
這種CASE WHEN THEN語句與Java中的switch語句基本相同:
SELECT CASE 3
WHEN 1 THEN 'a'
WHEN 2 THEN 'b'
WHEN 3 THEN 'c'
WHEN 4 THEN 'd'
END;
2 CASE WHENcondition THEN expr1 WHEN condition THEN expr2 … END
這種CASE WHEN THEN語句與Java中的多分支if/else if比較相似:
SELECT CASE
WHEN 1>2 THEN '1>2'
WHEN 1<2 THEN '1<2'
END;
3 IF(condition,expr1, expr1)
同時與Java中的if/else
SELECT
IF(1 > 0, '1>0','1<0');
4 INNULL(expr1,expr2)
當expr1為NULL時,那么函數(shù)返回expr2搓扯,否則返回expr1检痰。
SELECT
IFNULL(NULL, 'hello');
?
SELECT
IFNULL('hello', 'world');
常用函數(shù)
1 時間日期相關函數(shù)
[if !supportLists]l? [endif]CURRENT_DATE():輸出當前日期;
[if !supportLists]l? [endif]CURRENT_TIME():輸出當前時間锨推;
[if !supportLists]l? [endif]CURRENT_TIMESTAMP():輸出當前日期和時間铅歼,即輸出當前時間戳;
[if !supportLists]l? [endif]NOW():輸出當前日期和時間换可,與CURRENT_TIMESTAMP相同椎椰;
2 字符串相關函數(shù)
[if !supportLists]l? [endif]CONCAT('My',
'SQL'):輸出MySQL,即連接字符串沾鳄,參數(shù)可以是多個慨飘;
[if !supportLists]l? [endif]CHAR_LENGTH('helloworld中'):輸出11,返回字符串字符的個數(shù)洞渔;
[if !supportLists]l? [endif]UCASE('hello'):輸出HELLO套媚;
[if !supportLists]l? [endif]LCASE('HELLO'):輸出hello缚态;
[if !supportLists]l? [endif]LEFT('helloworld',5):輸出hello,輸出左邊5個字符堤瘤;
[if !supportLists]l? [endif]LENGTH('helloworld中'):輸出13玫芦,返回字符串所占字節(jié)數(shù)。當然本辐,如果client的字符集是gbk桥帆,那么就輸出12了;
[if !supportLists]l? [endif]STRCMP('zhan',
'zhao'):輸出-1慎皱,比較兩個字符串的大小老虫,如果前者大返回1,后者大返回-1茫多,相等返回0祈匙;
[if !supportLists]l? [endif]TRIM('?? hello??'):輸出hello,去除左右邊空白天揖;
3 數(shù)學運算相關函數(shù)
[if !supportLists]l? [endif]ABS(-100):輸出100夺欲,求絕對值祭芦;
[if !supportLists]l? [endif]BIN(15):輸出1111播掷,即15的二進制字符串;
[if !supportLists]l? [endif]FORMAT(1.23456,
3):輸出1.235舀寓,保留3位小數(shù)(四舍五入)斑唬,如果整數(shù)部分大于3位會有逗號出現(xiàn)市埋;
[if !supportLists]l? [endif]HEX(15):輸出F,即出來16進制表示形式恕刘;
[if !supportLists]l? [endif]MOD(10,
3):輸出1缤谎,即取余運算;
[if !supportLists]l? [endif]RAND():輸出0~1之間的隨機小數(shù)雪营;