MySQL常用的单行函数汇总2——字符串函数
字符串函数:
1 SELECT ASCII('Abcdfsf'),CHAR_LENGTH('hello'),CHAR_LENGTH('我们'), 2 LENGTH('hello'),LENGTH('我们') 3 FROM DUAL;
ASCII('Abcdef'):获取对应字符串的第一个字符的ASC码的值 CHAR_LENGTH:获取字符串的长度(将汉字也看做一个字符) LENGTH:获取字符串的长度(将汉字看作三个字符)
1 SELECT CONCAT(emp.last_name,' worked for ',mgr.last_name) "details"
CONCAT('str1','str2','str3'):将str1,str2,str3这三个字符串进行相连接(不同字符串即为参数,用‘,’隔开,不要用加号)
1 SELECT CONCAT_WS('-','hello','world','hello','beijing')#得到hello-world-hello-beijing 2 FROM DUAL;
CONCAT_WS('str','str1','str2','str3'):将str1,str2,str3这三个字符串用str字符串进行连接
1 #字符串的索引是从1开始的! 2 SELECT INSERT('helloworld',2,3,'aaaaa'),REPLACE('hello','lol','mmm')#输出haaaaaoworld , hello 3 FROM DUAL;
INSERT('str1',index,length,'str2'):index1表示从哪里开始插入,length表示从index开始要替换的长度有多长,str1为准备被替换的字符串,str2为要拿去替换的字符串
REPLACE('str','str1','str2'):要操作的字符串str,str1为在str中去寻找的要替换的字符串为str1,如果找到对应的str1则将其替换成str2
1 SELECT UPPER('HelLo'),LOWER('HelLo') 2 FROM DUAL;
UPPER:将字符串转换为大写,LOWER:将字符串转换为小写
1 SELECT LEFT('hello',2),RIGHT('hello',3),RIGHT('hello',13) 2 FROM DUAL;
LEFT('str',length):在str中从左端开始向右取length个字符所得的结果
RIGHT('str',length):在str中从右端开始向左取length个字符所得的结果
1 # LPAD:实现右对齐效果 2 # RPAD:实现左对齐效果 3 SELECT employee_id,last_name,LPAD(salary,10,' ') 4 FROM employees;
LPAD(属性,length,'char'):要对其的属性名,对其的字符串长度,实现对其所进行的填充字段(即字符串不足length位时用char字符进行填充)
1 LTRIM(' h el lo ')
去掉字符串中的首尾空格
1 TRIM('oo' FROM 'ooheollo')
去掉ooheollo中的oo子字符串
1 SELECT REPEAT('hello',4),LENGTH(SPACE(5)),STRCMP('abc','abe') 2 FROM DUAL;
REPEAT('str',times):将字符串str重复times次后得到的新字符串
STRCMP('str1','str2'):比较str1和str2的asc码差值,如果差值<0返回-1,=0返回0,>0返回1
1 SELECT SUBSTR('hello',2,2),LOCATE('lll','hello') 2 FROM DUAL;
SUBSTR('str',begin,length):获取str中的子字符串,从begin下标开始,长度为length
LOCATE('lll','hello'):寻找字符串'lll'在‘hello'中的位置,如果找到则返回第一个字符串下标位置,否则返回0
1 SELECT ELT(2,'a','b','c','d'),FIELD('mm','gg','jj','mm','dd','mm'), 2 FIND_IN_SET('mm','gg,mm,jj,dd,mm,gg') 3 FROM DUAL;
ELT(index,'s1','s2','s3','s4'):如index = 2,则返回s2的值
FIELD('str','s1','s2','s3'):寻找str在s1,s2,s3中第一次出现的位置,没有出现则返回0
FIELD_IN_SET('str','s1,s2,s3'):与FIELD基本类似,只是其将3个字符串合成了一个字符串,子字符串间用逗号隔开
1 SELECT employee_id,NULLIF(LENGTH(first_name),LENGTH(last_name)) "compare"#获取这两者名字中较长的那个字符串的长度 2 FROM employees;