【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

posted @   植树chen  阅读(102)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示