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

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

前言:本人遇到一个需求,需要在MySql的字段中截取一段字符串中的特定字符,类似于正则表达式的截取,苦于没有合适的方法,百度之后终于找到一个合适的方法:substring_index('www.sqlstudy.com.cn', '.', -2)

强烈推荐该方法获取含有特定字符的数据。

  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) |

+————————————————+

| www.sqlstudy |

+————————————————+

 

  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) |

+—————————————————+

| www.sqlstudy.com.cn |

+—————————————————+

  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 |

+————————————————————–+

总结

以上所述是小编给大家介绍的Mysql字符串截取及获取指定字符串中的数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对钦钦技术栈网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

原文链接:https://www.cnblogs.com/lxhbky/archive/2019/11/01/11775924.html

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/14032/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年8月21日 下午12:03
下一篇 2022年8月21日 下午12:03
软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!