注意:MySQL中,字符串的位置是从1开始的。
ASCII(S)
返回字符串S中的第一个字符的ASCII码值.
与第一个字符后面的其他字符无关。
SELECT ASCII('Abcdfsf') FROM DUAL;
CHAR_LENGTH(s)
返回字符串s的字符数。作用与CHARACTER_LENGTH(s)相同。
SELECT CHAR_LENGTH('hello'), CHAR_LENGTH('我们') FROM DUAL;
LENGTH(s)
返回字符串s的字节数,和字符集有关
utf-8 中每个中文字符占三个字节
SELECT LENGTH('hello'), LENGTH('我们') FROM DUAL;
CONCAT(s1,s2,…,sn)
连接s1,s2,…,sn为一个字符串
SELECT CONCAT('zs',' worked for ','ls') FROM DUAL;
CONCAT_WS(x, s1,s2,…,sn)
同CONCAT(s1,s2,…)函数,但是每个字符串之间要加上x
SELECT concat_ws('---', 'zs', 'ls', 'ww') FROM DUAL;
INSERT(str, idx, len, replacestr)
将字符串str从第idx位置开始,len个字符长的子串替换为字符串replacestr
注意:MySQL中,字符串的位置是从1开始的。
SELECT INSERT('helloworld',2,3,'aaaaa') FROM DUAL;
REPLACE(str, a, b)
用字符串b替换字符串str中所有出现的字符串a
字符串str中不存在子字符串a,不进行替换。
SELECT replace('hello', 'll', 'mm'), REPLACE('hello','lol','mmm') FROM DUAL;
UPPER(s) 或 UCASE(s)
将字符串s的所有字母转成大写字母
SELECT UPPER('HelLo'),UCASE('HelLo') FROM DUAL;
LOWER(s) 或LCASE(s)
将字符串s的所有字母转成小写字母
SELECT LOWER('HelLo'),LCASE('HelLo') FROM DUAL;
LEFT(str,n)
返回字符串str最左边的n个字符
RIGHT(str,n)
返回字符串str最右边的n个字符
SELECT LEFT('hello',2),RIGHT('hello',3),RIGHT('hello',13) FROM DUAL;
LPAD(str, len, pad)
用字符串pad对str最左边进行填充,直到str的长度为len个字符
实现右对齐效果
RPAD(str ,len, pad)
用字符串pad对str最右边进行填充,直到str的长度为len个字符
实现左对齐效果
SELECT LPAD('hello', 7,' '), LPAD('world', 7,' '), LPAD('aa', 7,' '), RPAD('hello', 7,' '), RPAD('world', 7,' '), RPAD('aa', 7,' ') FROM dual;
LTRIM(s)
去掉字符串s左侧的空格
RTRIM(s)
去掉字符串s右侧的空格
TRIM(s)
去掉字符串s开始与结尾的空格
SELECT ' he l lo ', CONCAT('*', LTRIM(' he l lo '), '*'), CONCAT('*', RTRIM(' he l lo '), '*'), CONCAT('*', TRIM(' he l lo '), '*') FROM dual;
TRIM(s1 FROM s)
去掉字符串s开始与结尾的s1
TRIM(LEADING s1 FROM s)
去掉字符串s开始处的s1
TRIM(TRAILING s1 FROM s)
去掉字符串s结尾处的s1
SELECT TRIM('oo' FROM 'ooheollo'), TRIM(LEADING 'o' FROM 'ooheollo'), TRIM(TRAILING 'o' FROM 'ooheollo') FROM DUAL;
REPEAT(str, n)
返回str重复n次的结果
SELECT REPEAT('hello',4) FROM DUAL;
SPACE(n)
返回n个空格
SELECT CONCAT(SPACE(5), '*') FROM DUAL;
STRCMP(s1,s2)
比较字符串s1,s2的ASCII码值的大小
SELECT STRCMP('abc','abe'), STRCMP('abe','abc'), STRCMP('abc','abc') FROM DUAL;
SUBSTR(s,index,len)
返回从字符串s的index位置其len个字符,作用与SUBSTRING(s,n,len)、 MID(s,n,len)相同
SELECT SUBSTR('hello',2,2) FROM DUAL;
LOCATE(substr,str)
返回字符串substr在字符串str中首次出现的位置,作用于POSITION(substr IN str)、INSTR(str,substr)相同。未找到,返回0
SELECT LOCATE('lll','hello'), LOCATE('ll','hello'), LOCATE('l','hello') FROM DUAL;
ELT(m,s1,s2,…,sn)
返回指定位置的字符串,如果m=1,则返回s1,如果m=2,则返回s2,如果m=n,则返回sn
FIELD(s,s1,s2,…,sn)
返回字符串s在字符串列表中第一次出现的位置
FIND_IN_SET(s1,s2)
返回字符串s1在字符串s2中出现的位置。其中,字符串s2是一个以逗号分
隔的字符串
SELECT ELT(2,'a','b','c','d'), FIELD('mm','gg','jj','mm','dd','mm'), FIND_IN_SET('mm','gg,mm,jj,dd,mm,gg') FROM DUAL;
REVERSE(s)
返回s反转后的字符串
SELECT REVERSE('abcdefg') FROM DUAL;
NULLIF(value1,value2)
比较两个字符串,如果value1与value2相等,则返回NULL,否则返回
value1
SELECT NULLIF('mysql','mysql'),NULLIF('mysql', '') FROM dual;