字符串函数
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'), |
| CHAR_LENGTH('hello'),CHAR_LENGTH('我们'), |
| LENGTH('hello'),LENGTH('我们') |
| 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') |
| FROM DUAL; |

示例3:
| SELECT |
| INSERT('helloworld',2,3,'aaaa'), |
| REPLACE('hello','lol','mmm'),REPLACE('hello','llo','mmm') |
| FROM DUAL; |
| |
| SELECT |
| UPPER('Hello'), |
| LOWER('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), |
| RIGHT('hello',3),RIGHT('hello',13) |
| FROM DUAL; |
| |
| SELECT |
| employee_id,last_name,LPAD(salary,10,'#') |
| FROM employees; |
| |
| SELECT |
| CONCAT('---',LTRIM(' h el lo '),'***'), |
| TRIM('oo' FROM 'ooheollo') |
| FROM DUAL; |
示例2:
| SELECT |
| REPEAT('hello',3), |
| LENGTH(SPACE(5)), |
| STRCMP('abc','abe') |
| FROM DUAL; |
| |
| SELECT |
| SUBSTR('hello',2,2), |
| LOCATE('lll','hello') |
| FROM DUAL; |
| |
| 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; |
| |
| SELECT |
| employee_id,NULLIF(LENGTH(first_name),LENGTH(last_name)) "compare" |
| FROM employees; |

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'), |
| FIND_IN_SET('mm','hello,mm,amma'), |
| NULLIF('mysql','mysql'),NULLIF('mysql','') |
| FROM DUAL; |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本