一、字符串函数
1、ascii(str):返回字符串str的第一个字符的ascii值(str是空串时返回0)
-> 50 mysql> select ascii(2); -> 50 mysql> select ascii('dete'); -> 100
2、ord(str):如果字符串str句首是单字节返回与ascii()函数返回的相同值
如果是一个多字节字符,以格式返回((first byte ascii code)*256+(second byte ascii code))[*256+third byte asciicode...]
mysql> select ord('2'); -> 50
3、conv(n,from_base,to_base):对from_base进制的数n,转成to_base进制的表示方式
注意:进制范围为2-36进制,当to_base是负数时,n作为有符号数否则作无符号数
mysql> select conv("a",16,2); -> '1010' mysql> select conv("6e",16,10); -> '110' mysql> select conv(-17,16,-10); -> '-23'
4、bin(n)/oct(n)/hex(n)
作用:返回10进制数n对应的二进制/八进制/十六进制的表示方式
mysql> select bin(12); -> '1100' mysql> select oct(12); -> '14' mysql> select hex(255); -> 'ff'
5、char(n,…)
作用:返回多个ascii码对应的字符组成的字符串
mysql> select char(77,121,83,81,'76'); -> 'mysql' mysql> select char(77,77.3,'77.3'); -> 'mmm'
6、concat(str1,str2,…)
作用:将多个参数拼接成一个字符串,只要有一个为null,就返回null。
mysql> select concat('my', 's', 'ql'); -> 'mysql' mysql> select concat('my', null, 'ql'); -> null mysql> select concat(14.3); -> '14.3'
7、length(str)/octet_length(str)
作用:返回参数对应的默认字符集的所有字节数。
8、char_length(str)/character_length(str)
作用:返回字符串str的字符长度
mysql> select length('text'); -> 4 mysql> select octet_length('text'); -> 4
9、locate(substr,str)/position(substr in str)/instr(str,substr)
作用:返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)
mysql> select locate('bar', 'foobarbar'); -> 4 mysql> select locate('xbar', 'foobar'); -> 0 mysql> select instr('foobarbar', 'bar'); -> 4
10、locate(substr,str,pos)
作用:返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)
mysql> select locate('bar', 'foobarbar',5); -> 7
11、lpad(str,len,padstr)/rpad(str,len,padstr)
用字符串padstr填补str左端/右端直到字串长度为len并返回
mysql> select lpad('hi',4,'??'); -> '??hi' mysql> select rpad('hi',5,'?'); -> 'hi???'
12、left(str,len)/right(str,len)
作用:返回字符串str的左端/右端的len个字符
mysql> select left('foobarbar', 5); -> 'fooba' mysql> select right('foobarbar', 4); -> 'rbar'
13、substring(str,pos,len)/substring(str from pos for len)/mid(str,pos,len)
作用:返回字符串str的位置pos起len个字符
mysql> select substring('quadratically',5,6); -> 'ratica'
14、substring(str,pos)/substring(str from pos)
作用:返回字符串str的位置pos起的一个子串,pos为负数时,倒数后截取到最后
mysql> select substring('quadratically',5); -> 'ratically' mysql> select substring('foobarbar' from 4); -> 'barbar'
15、substring_index(str,delim,count)
作用:返回从字符串str的第count个出现的分隔符delim之后的子串
(count为正数时返回左端,否则返回右端子串)
mysql> select substring_index('www.mysql.com', '.', 2); -> 'www.mysql' mysql> select substring_index('www.mysql.com', '.', -2); -> 'mysql.com'
16、ltrim(str)/rtrim(str)
作用:返回删除了左空格/右空格的字符串str
mysql> select ltrim(' barbar'); -> 'barbar' mysql> select rtrim('barbar '); -> 'barbar'
17、trim([[both | leading | trailing] [remstr] from] str)
作用:返回前缀或后缀remstr被删除了的字符串str(位置参数默认both,remstr默认值为空格)
mysql> select trim(' bar '); -> 'bar' mysql> select trim(leading 'x' from 'xxxbarxxx'); -> 'barxxx' mysql> select trim(both 'x' from 'xxxbarxxx'); -> 'bar' mysql> select trim(trailing 'xyz' from 'barxxyz'); -> 'barx'
18、space(n)
作用:返回由n个空格字符组成的一个字符串
mysql> select space(6); -> '
19、replace(str,from_str,to_str)
作用:用字符串to_str替换字符串str中的子串from_str并返回
mysql> select replace('www.mysql.com', 'w', 'ww'); -> 'wwwwww.mysql.com'
20、repeat(str,count)
作用:返回由count个字符串str连成的一个字符串(任何参数为null时返回null,count<=0时返回一个空字符串)
mysql> select repeat('mysql', 3); -> 'mysqlmysqlmysql'
21、reverse(str)
作用:颠倒字符串str的字符顺序并返回
mysql> select reverse('abc'); -> 'cba'
22、insert(str,pos,len,newstr)
作用:把字符串str由位置pos起len个字符长的子串替换为字符串newstr并返回
mysql> select insert('quadratic', 3, 4, 'what'); -> 'quwhattic'
23、lcase(str)/lower(str)/ucase(str)/upper(str)
作用:返回str的大小写
24、elt(n,str1,str2,str3,…)
作用:返回第n个字符串(n小于1或大于参数个数返回null)
mysql> select elt(1, 'ej', 'heja', 'hej', 'foo'); -> 'ej' mysql> select elt(4, 'ej', 'heja', 'hej', 'foo'); -> 'foo'
25、field(str,str1,str2,str3,…)
作用:返回str等于其后的第n个字符串的序号(如果str没找到返回0)
mysql> select field('ej', 'hej', 'ej', 'heja', 'hej', 'foo'); -> 2 mysql> select field('fo', 'hej', 'ej', 'heja', 'hej', 'foo'); -> 0
26、find_in_set(str,strlist)
作用:返回str在字符串集strlist中的序号(任何参数是null则返回null,如果str没找到返回0,参数1包含","时工作异常)
mysql> select find_in_set('b','a,b,c,d'); -> 2
27、make_set(bits,str1,str2,…)
把参数1的数字转为二进制,假如某个位置的二进制位等于1,对应位置的字串选入字串集并返回(null串不添加到结果中)
mysql> select make_set(1,'a','b','c'); 01 97-61 01100001 01100010 0011 -> 'a' mysql> select make_set(1 | 4,'hello','nice','world'); 01 0100 -> 'hello,world' mysql> select make_set(0,'a','b','c'); -> ''
28、export_set(bits,on,off,[separator,[number_of_bits]])
按bits排列字符串集,只有当位等于1时插入字串on,否则插入off(separator默认值",",number_of_bits参数使用时长度不足补0而过长截断)
mysql> select export_set(5,'y','n',',',4) -> y,n,y,n
29、load_file(file_name)
读入文件并且作为一个字符串返回文件内容(文件无法找到,路径
不完整,没有权限,长度大于max_allowed_packet会返回null)
mysql> update table_name set blob_column=load_file ("/tmp/picture") where id=1;
30、soundex(str)
返回str的一个同音字符串(听起来“大致相同”字符串有相同的
同音字符串,非数字字母字符被忽略,在a-z外的字母被当作元音)
mysql> select soundex('hello'); -> 'h400' mysql> select soundex('quadratically'); -> 'q36324'
二、数学函数
1、abs(n)
作用:返回n的绝对值
2、sign(n)
返回参数的符号(为-1、0或1)
mysql> select sign(-32); -> -1 mysql> select sign(0); -> 0 mysql> select sign(234); -> 1
3、mod(n,m)
取模运算,返回n被m除的余数(同%操作符)
4、floor(n)
返回不大于n的最大整数值
5、ceiling(n)
返回不小于n的最小整数值 向上取整
mysql> select ceiling(1.23); -> 2 mysql> select ceiling(-1.23); -> -1
6、round(n,d)
返回n的四舍五入值,保留d位小数(d的默认值为0)
mysql> select round(-1.23); -> -1 mysql> select round(-1.58); -> -2 mysql> select round(1.58); -> 2 mysql> select round(1.298, 1); -> 1.3 mysql> select round(1.298, 0); -> 1
7、exp(n)
返回值e的n次方(自然对数的底)
mysql> select exp(2); -> 7.389056 mysql> select exp(-2); -> 0.135335
8、log(n)
返回n的自然对数
mysql> select log(2); -> 0.693147 mysql> select log(-2); -> null
9、log10(n)
返回n以10为底的对数
mysql> select log10(2); -> 0.301030 mysql> select log10(100); -> 2.000000 mysql> select log10(-100); -> null
10、pow(x,y)/power(x,y)
返回值x的y次幂
mysql> select pow(2,2); -> 4.000000 mysql> select pow(2,-2); -> 0.250000
11、sqrt(n)
返回非负数n的平方根
mysql> select sqrt(4); -> 2.000000 mysql> select sqrt(20); -> 4.472136
12、pi()
返回圆周率
mysql> select pi(); -> 3.141593
13、cos(n)
返回n的余弦值
mysql> select cos(pi()); -> -1.000000
14、sin(n)
返回n的正弦值
mysql> select sin(pi()); -> 0.000000
15、tan(n)
返回n的正切值
mysql> select tan(pi()+1); -> 1.557408
16、acos(n)
返回n反余弦(n是余弦值,在-1到1的范围,否则返回null)
mysql> select acos(1); -> 0.000000 mysql> select acos(1.0001); -> null mysql> select acos(0); -> 1.570796
17、asin(n)
返回n反正弦值
mysql> select asin(0.2); -> 0.201358 mysql> select asin('foo'); -> 0.000000
18、atan(n)
返回n的反正切值
mysql> select atan(2); -> 1.107149 mysql> select atan(-2); -> -1.107149
19、atan2(x,y)
返回2个变量x和y的反正切(类似y/x的反正切,符号决定象限)
mysql> select atan(-2,2); -> -0.785398 mysql> select atan(pi(),0); -> 1.570796
20、cot(n)
返回x的余切
-> -1.57267341 mysql> select cot(0); -> null
21、rand()/rand(n)
返回在范围0到1.0内的随机浮点值(可以使用数字n作为初始值)
mysql> select rand(); -> 0.5925 mysql> select rand(20); -> 0.1811 mysql> select rand(20); -> 0.1811 mysql> select rand(); -> 0.2079 mysql> select rand(); -> 0.7888
22、degrees(n)
把n从弧度变换为角度并返回
mysql> select degrees(pi()); -> 180.000000
23、radians(n)
把n从角度变换为弧度并返回
mysql> select radians(90); -> 1.570796
24、truncate(n,d)
保留数字n的d位小数并返回
mysql> select truncate(1.223,1); -> 1.2 mysql> select truncate(1.999,1); -> 1.9 mysql> select truncate(1.999,0); -> 1
25、least(x,y,…)
返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)
则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较)
mysql> select least(2,0); -> 0 mysql> select least(34.0,3.0,5.0,767.0); -> 3.0 mysql> select least("b","a","c"); -> "a"
26、greatest(x,y,…)
返回最大值(其余同least())
mysql> select greatest(2,0); -> 2 mysql> select greatest(34.0,3.0,5.0,767.0); -> 767.0 mysql> select greatest("b","a","c"); -> "c"