MySQL常用函数:
1、ascii(str):返回字符串的第一个字符对应的字节码的第一个字节。字符串为空字符串时,返回0。字符串为null时,返回null。
eg:
SELECT ASCII('你好');#返回的是第一个字符对应的字节码的第一个字节。228
SELECT ASCII('helloworld');#104
SELECT ASCII('');#0
2、ord(str):如果字符串的第一个字符为单字节字符时,与函数ascii(String)一样
如果不是单字节,如:UTF8的'中'为三个字节---返回值为第一个字节*256+第二个字节*256+第三个字节
3、conv(n,from_base,to_base),将from_base进制中的字符n转成to_base进制下的表示方式;
eg:
SELECT CONV('f',16,2);#16进制中的字符f转成2进制来表示。 1111
SELECT CONV('6f',16,2);#1101111
4、bin(n) oct(n) hex(n);
将数值n转换成对应的二进制 八进制 和十六进制
查看十进制数13的二进制,100的八进制 128的十六进制
eg:
SELECT BIN(13),OCT(100),HEX(128);#1101 144 80
5、char(n...),返回多个ascii码组成的字符串
eg:
SELECT CHAR(104,101,108,108,111);#hello
6、concat(str1,str2...):将多个字符串拼接成一个字符串
如果有一个参数为null,返回的就是null
练习:将hello 和kitty进行拼接
将hello和null进行拼接
eg:
SELECT CONCAT('hello','kitty');#hellokitty
SELECT CONCAT('hello',NULL);#NULL
7、
length(str)/octet_length(str) ---这两个函数返回的是默认字符集下的字符串的所有字节数
char_length(str)/character_length(str) ---这两个函数返回的是字符串对应的字符长度
练习:统计下'no zuo no die'的字节长度
统计下'上海自来水来自海上'的字节长度
eg:
SELECT LENGTH('no zuo no dei');#如果是汉字则乘以字节数 13
SELECT CHAR_LENGTH('上海自来水来自海上'); #9
SELECT OCTET_LENGTH('上海自来水来自海上');#如果是汉字则乘以字节数 27
SELECT CHARACTER_LENGTH('上海自来水来自海上'); #9
8、locate(substr,str)/position(substr in str)/instr(str,substr)
作用:返回substr在str第一次出现的位置。如果没有,返回0。
mysql> select locate('bar', 'foobarbar');
-> 4
mysql> select locate('xbar', 'foobar');
-> 0
mysql> select instr('foobarbar', 'bar');
-> 4
9、locate(substr,str,pos)
作用:返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)
mysql> select locate('bar', 'foobarbar',5);
-> 7
10、lpad(str,len,padstr)/rpad(str,len,padstr)
作用:用字符串padstr填补str左端/右端直到字串长度为len并返回
mysql> select lpad('hi',4,'??');
-> '??hi'
mysql> select rpad('hi',5,'?');
-> 'hi???'
left(str,len)/right(str,len)
作用:返回字符串str的左端/右端的len个字符
mysql> select left('foobarbar', 5);
-> 'fooba'
mysql> select right('foobarbar', 4);
-> 'rbar'
substring(str,pos,len)/substring(str from pos for len)/mid(str,pos,len)
作用:返回字符串str的位置pos起len个字符
mysql> select substring('quadratically',5,6);
-> 'ratica'
substring(str,pos)/substring(str from pos)
作用:返回字符串str的位置pos起的一个子串,pos为负数时,倒数后截取到最后
mysql> select substring('quadratically',5);
-> 'ratically'
mysql> select substring('foobarbar' from 4);
-> 'barbar'
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'
ltrim(str)/rtrim(str)
作用:返回删除了左空格/右空格的字符串str
mysql> select ltrim(' barbar');
-> 'barbar'
mysql> select rtrim('barbar ');
-> 'barbar'
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'
space(n)
作用:返回由n个空格字符组成的一个字符串
mysql> select space(6);
-> ' '
18、replace(str,from_str,to_str)
作用:用字符串to_str替换字符串str中的子串from_str并返回
mysql> select replace('www.mysql.com', 'w', 'ww');
-> 'wwwwww.mysql.com'
19、repeat(str,count)
作用:返回由count个字符串str连成的一个字符串(任何参数为null时
返回null,count<=0时返回一个空字符串)
mysql> select repeat('mysql', 3);
-> 'mysqlmysqlmysql'
20、reverse(str)
作用:颠倒字符串str的字符顺序并返回
mysql> select reverse('abc');
-> 'cba'
21、insert(str,pos,len,newstr);把字符串str由位置pos起len个字符长的子串替换为字符串newstr并返回
SELECT INSERT('abcd',2,1,'betty'); abettycd
SELECT INSERT('i like you',LOCATE('you','i like you'),3,'mysql'); i like mysql
22、lcase(str)/lower(str)/ucase(str)/upper(str)
SELECT LOWER('i like yourName 3'),UPPER('i like yourName 3');
23、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'
24、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
25、find_in_set(str,strlist)
作用:返回str在字符串集strlist中的序号(任何参数是null则返回null,如果str没找到返回0,参数1包含","时工作异常)
mysql> select find_in_set('b','a,b,c,d');
-> 2
26、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');
-> ''