数据库
首页 > 数据库> > 【MySQL】单列函数-字符串函数

【MySQL】单列函数-字符串函数

作者:互联网

字符串函数

目录
MySQL中,字符串的位置是从1开始的。

1.第一部分

函数 小写 用法
ASCII(s) 返回字符串S中的第一个字符的ASCII码值
CHAR_LENGTH(s) char_length 返回字符串s的字符数,作用与CHARACTER_LENGTH(s)相同
LENGTH(s) length 返回字符串s的字节数,和字符集有关
CONCAT(s1,s2,...,sn) concat 连接s1,s2,...,sn为一个字符串
CONCAT_WS(x,s1,s2,...,sn) 连接s1,s2,...,sn为一个字符串,每个字符串之间加上x
INSERT(str,index,len,repStr) insert 将字符串str的index位置开始len长的子串替换为字符串repStr
REPLACE(str,a,b) replace 用字符串b替换字符串str中出现的所有字符串a
UPPER(s)或UCASE(s) uppper,case 将字符串s所有字母转成大写
LOWER(s)或LCASE(s) lower,lcase 将字符串s所有字母转成小写

示例1:

SELECT 
	ASCII('Abcdfsf'),ASCII('abcdfsf'),	-- 65 97	第一个字符ASCII码值
	CHAR_LENGTH('hello'),CHAR_LENGTH('我们'),   -- 5 2	字符数
	LENGTH('hello'),LENGTH('我们')	-- 5	6		字节数
FROM DUAL;

示例2:

SELECT 
	CONCAT(emp.last_name,' worked for ',mgr.last_name) "details"
FROM employees emp JOIN employees mgr
WHERE emp.`manager_id`= mgr.employee_id;

SELECT
	CONCAT_WS('-','hello','world','hello','beijing')   -- hello-world-hello-beijing
FROM DUAL;

image

示例3:

SELECT
	INSERT('helloworld',2,3,'aaaa'),	-- haaaaoworld 从2开始替换3个
	REPLACE('hello','lol','mmm'),REPLACE('hello','llo','mmm')  -- hello hemmm
FROM DUAL;

SELECT
	UPPER('Hello'),    -- HELLO
	LOWER('Hello')     -- hello
FROM DUAL;

SELECT last_name,salary
FROM employees
WHERE LOWER(last_name) = 'King';

2.第二部分

函数 小写 用法
LEFT(str,n) left 返回字符串str最左边的n个字符
RIGHT(str,n) right 返回字符串str最右边的n个字符
LPAD(str,len,pStr) left padding 用字符串pStr对str最左边进行填充,直到str的长度为len个字符
RPAD(str,len,pStr) right padding 用字符串pStr对str最右边边进行填充,直到str的长度为len个字符
LTRIM(s) left trim 去除字符串s左侧的空格
RTRIM(s) right trim 去除字符串s右侧的空格
TRIM(s) trim 去掉字符串s开始与结尾的空格
TRIM(s1 FROM s) trim 去掉字符串s开始与结尾的s1
TRIM(LEADING s1 FROM s) leading 主导 去掉字符串s开始处的s1
TRIM(TRAILING s1 FROM s) trailing 尾随 去掉字符串s结尾处的s1

示例1:

SELECT 
	LEFT('hello',2),  -- he
	RIGHT('hello',3),RIGHT('hello',13)  -- llo hello
FROM DUAL;

SELECT 
	employee_id,last_name,LPAD(salary,10,'#')
FROM employees;

SELECT 
	CONCAT('---',LTRIM('   h  el  lo    '),'***'),  -- ---h  el  lo  ***
	TRIM('oo' FROM 'ooheollo')   -- heollo
FROM DUAL;

示例2:

SELECT 
	REPEAT('hello',3),   -- hellohellohello
	LENGTH(SPACE(5)),   -- 5
	STRCMP('abc','abe')  -- -1
FROM DUAL;

SELECT
	SUBSTR('hello',2,2),  -- el
	LOCATE('lll','hello')  -- 0
FROM DUAL;

SELECT 
	ELT(2,'a','b','c','d'),  -- b
	FIELD('mm','gg','jj','mm','dd','mm'),  -- 3
	FIND_IN_SET('mm','gg,mm,jj,dd,mm,gg')   -- 2
FROM DUAL;

SELECT 
	employee_id,NULLIF(LENGTH(first_name),LENGTH(last_name)) "compare"
FROM employees;

image

3.第三部分

函数 小写 用法
REPEAT(str,n) repeat 返回str重复n次的结果
SPACE(n) space 返回n个空格
STRCMP(s1,s2) string compare 比较字符串s1,s2的ASCII码值的大小
SUBSTR(s,index,len) substring 截取字符串s,从index位置开始len个字符,作用与SUBSTRING(s,n,len)、MID(s,n,len)相同
LOCATE(substr,str) locate 返回字符串substr在str首次出现的位置,作用与POSITION(substr IN str)、INSTR(str,substr)相同。未找到则返回0
ELT(m,s1,s2,...,sn) Extract Load Transform 返回指定位置的字符串,m=1返回s1;m=2返回s2;m=n返回sn
FIELD(s,s1,s2,...,sn) field 返回字符串s在字符串列表中第一次出现的位置
FIND_IN_SET(s1,s2) find_in_set 返回字符串s1在字符串s2中出现的位置。其中,字符串s2是一个以逗号分隔的字符串
REVERSE(s) reverse 返回s反转后的字符串
NULLLIF(s1,s2) null if 比较两个字符串,如果s1与s2相等,则返回null;否则返回s1
SELECT 
	FIELD('mm','hello','msm','amma'),   -- 0 后续字符串中没有出现mm
	FIND_IN_SET('mm','hello,mm,amma'),    -- 2
	NULLIF('mysql','mysql'),NULLIF('mysql','')  -- null mysql
FROM DUAL;

image

标签:函数,--,单列,hello,str,MySQL,字符串,s1,SELECT
来源: https://www.cnblogs.com/zhishu/p/16575474.html