MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)

在日常项目写MySQL语句的时,常用到的函数,如对字符串截取,子父串关系的匹配等,这里记录下来,方便备查。

一、字符串截取
1、函数-substr

substr 是MySQL 自带的字符串截取函数。
基本语法substr [str, num, length]

1.1 选项参数

str 目标字符串;
num 截取的起始位置,从 1 开始;
length 待截取的长度,省略则表示字符串的长度。

1.2 demo演示

1)省略第三个参数,则表示展示目标字符串全部
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第1张图片
2)起始位置 为 0,不生效,查询结果为空
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第2张图片
3)指定起始位置 和 长度,效果如下所示。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第3张图片

2、函数-substring_index

substring_index 是MySQL 自带的字符串截取函数,将目标字符串以分隔符来分段,计数count来取第几个。
基本语法substring_index [str, delim,count]

2.1 选项参数

str 目标字符串;
delim 分隔符;
count 计数,为正时,从左往右;为负时,从右往左。

2.2 demo演示

1)取 前一部分,即 www,如下图所示。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第4张图片
2)取 域名后缀,如下图所示。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第5张图片
3)取中间部分,即 双层嵌套,如下图所示。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第6张图片

二、子父串包含判断
1、函数-locate

locate 是MySQL 自带的字符串函数,判断一个字符串是否包含另一个字符串,返回出现的位置。
基本语法locate [substr, str,num]

1.1 选项参数

str 目标字符串;
substr 子字符串。
num 起始位置,默认为1,可以省略。

1.2 demo演示

1)子串存在于父串,则显示 www 第一次出现的位置,查询结果为 1。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第7张图片
删除前面的www,再次查询则显示第二个匹配到的子串的位置,为11。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第8张图片
2)子串不存在于父串,则显示查询结果为 0。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第9张图片
父串是否包含子串的判断,除了 locate 函数,还有 position 函数instr 函数

2、函数-position

position 是MySQL 自带的字符串函数,返回子串第一次出现在父串出现的位置,不区分大小写。
基本语法position [substr in str]

2.1 选项参数

str 目标字符串;
substr 子字符串。

2.2 demo演示

1)子串存在于父串,则显示 www 第一次出现的位置,查询结果为 1。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第10张图片
删除前面的www,再次查询则显示第二个匹配到的子串的位置,为11。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第11张图片
2)子串不存在于父串,则显示查询结果为 0。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第12张图片

3、函数-instr

instr 是MySQL 自带的字符串函数,返回子串首次出现在父串出现的位置,不区分大小写。
基本语法instr [str , substr ]

3.1 选项参数

str 目标字符串;
substr 子字符串。

3.2 demo演示

1)子串存在于父串,则显示 www 首次出现的位置,查询结果为 1。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第13张图片
删除前面的www,再次查询则显示第二个匹配到的子串的位置,为11。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第14张图片
2)子串不存在于父串,则显示查询结果为 0。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第15张图片

4、函数-find_in_set

find_in_set 是MySQL 自带的字符串函数,返回子串在list中的位置,其中list中元素以逗号分隔。
基本语法find_in_set [str , strlist ]

4.1 选项参数

str 子字符串;
**strlist ** 字符串list集合,以逗号分隔。

4.2 demo演示

1)子串存在于list,则显示 www 出现的位置,查询结果为 1。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第16张图片
删除前面的www,再次查询则显示匹配到的 按逗号分隔的子串的位置,为4。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第17张图片
2)子串不存在于父串,则显示查询结果为 0。
MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)_第18张图片

总结

1)locate函数position函数instr 函数 的异同
相同之处:子串与父串的匹配过程,匹配成功则返回 子串在父串中第一次匹配到的位置,未匹配到则返回0。
不同之处: 参数的顺序不同,locate 入参是三个变量,可指定开始位置(可省略)

你可能感兴趣的:(数据处理,mysql,数据库,java)