Mysql字符串截取及获取指定字符串中的数据

数据大师
数据大师
数据大师
294
文章
0
评论
2021-06-0917:19:14 评论 1,248 3056字
摘要

最近接了一个新需求,需要在MySql的字段中截取一段字符串中的特定字符,下面把我的核心代码分享给大家,对mysql 字符串截取相关知识感兴趣的朋友一起看看吧

substring_index(input,split,index):input为要截取的字符,split为分隔符,Index为要截取第index个分隔符左(index为正)或右(index为负)的字符串。

 

拿个人的一个字符串举例:"Provider="RiskManagement" finalScore="65" RGID="100397278""      我要获取finalScore的值:

1
2
3
4
5
-- 1-获取finalScore右边的字符
select substring_index("Provider="RiskManagement" finalScore="65" RGID="100397278"","finalScore="",-1);
 
-- 2-再获取" RGID="左边的字符
select substring_index(substring_index("Provider="RiskManagement" finalScore="65" RGID="100397278"","finalScore="",-1),"" RGID="",1);

  结果1:65" RGID="100397278"

  结果2:65

 

MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。

 

1. 字符串截取:left(str, length)

1
2
3
4
5
6
mysql> select left("sqlstudy.com", 3);
+-------------------------+
| left("sqlstudy.com", 3) |
+-------------------------+
| sql |
+-------------------------+

2. 字符串截取:right(str, length)

1
2
3
4
5
6
mysql> select right("sqlstudy.com", 3);
+--------------------------+
| right("sqlstudy.com", 3) |
+--------------------------+
| com |
+--------------------------+

 

3. 字符串截取:substring(str, pos); substring(str, pos, len)

3.1 从字符串的第 4 个字符位置开始取,直到结束。

1
2
3
4
5
6
mysql> select substring("sqlstudy.com", 4);
+------------------------------+
| substring("sqlstudy.com", 4) |
+------------------------------+
| study.com |
+------------------------------+

3.2 从字符串的第 4 个字符位置开始取,只取 2 个字符。

1
2
3
4
5
6
mysql> select substring("sqlstudy.com", 4, 2);
+---------------------------------+
| substring("sqlstudy.com", 4, 2) |
+---------------------------------+
| st |
+---------------------------------+

3.3 从字符串的第 4 个字符位置(倒数)开始取,直到结束。

1
2
3
4
5
6
mysql> select substring("sqlstudy.com", -4);
+-------------------------------+
| substring("sqlstudy.com", -4) |
+-------------------------------+
| .com |
+-------------------------------+

3.4 从字符串的第 4 个字符位置(倒数)开始取,只取 2 个字符。

1
2
3
4
5
6
mysql> select substring("sqlstudy.com", -4, 2);
+----------------------------------+
| substring("sqlstudy.com", -4, 2) |
+----------------------------------+
| .c |
+----------------------------------+

我们注意到在函数 substring(str,pos, len)中, pos 可以是负值,但 len 不能取负值。

4. 字符串截取:substring_index(str,delim,count)

4.1 截取第二个 "." 之前的所有字符。

1
2
3
4
5
6
mysql> select substring_index("www.sqlstudy.com.cn", ".", 2);
+------------------------------------------------+
| substring_index("www.sqlstudy.com.cn", ".", 2) |
+------------------------------------------------+
+------------------------------------------------+

4.2 截取第二个 "." (倒数)之后的所有字符。

1
2
3
4
5
6
mysql> select substring_index("www.sqlstudy.com.cn", ".", -2);
+-------------------------------------------------+
| substring_index("www.sqlstudy.com.cn", ".", -2) |
+-------------------------------------------------+
| com.cn |
+-------------------------------------------------+  

4.3 如果在字符串中找不到 delim 参数指定的值,就返回整个字符串

1
2
3
4
5
6
mysql> select substring_index("www.sqlstudy.com.cn", ".coc", 1);
+---------------------------------------------------+
| substring_index("www.sqlstudy.com.cn", ".coc", 1) |
+---------------------------------------------------+
+---------------------------------------------------+

4.4 截取一个表某个字段数据的中间值 如该字段数据为 1,2,3

1
2
3
4
5
6
mysql> select substring_index(substring_index(该字段, ",", 2) , ",", -1) from 表名;
+--------------------------------------------------------------+
| substring_index(substring_index(该字段, ",", 2); , ",", -1)|
+--------------------------------------------------------------+
| 2 |
+--------------------------------------------------------------+

 

End.

来源:脚本之家

转载如果涉及作品、版权其他问题请联系我们第一时间删除微信号:lovedata0520)

更多文章前往首页浏览http://www.itongji.cn/

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: