Mysql内容查找替换

前言

基本上用java的都是用的Mysql数据库来进行数据的存储服务。

Mysql里面有很多自带的查找函数,掌握它其实是很有必要的。

今天和大家分享的是如何进行内容的查找替换操作。

背景

有个数据字段product_name,因为前期设计的原因,将中英文保存到了一起。假如存储内容如下:

帕图斯酒庄红葡萄酒(Petrus, Pomerol, France)

因为业务的变动,需要对其拆分,使用两个字段来进行存放。

解决思路

常规解决思路:

1、使用instr函数找到拆分的位置 ;

2、使用substring进行截取

3、然后使用替换函数替换掉( 和 )

组合起来就是

-- 获得中文名称

substring(product_name,instr(product_name,'('),1)

-- 获得英语名称

REPLACE(REPLACE(substring(product_name,instr(product_name,...

大家会发现,如果按照常规解题思路来,发现嵌套太深。

有没有简单点的呢?

这个还真有

快速解决思路

这里推荐大家使用substring_index

substring_index里面可以使用负数哦。

substring_index(str,delim,count) 
说明:substring_index(待截取有用部分的字符串,截取数据依据的字符,截取字符的位置N) 

还是解决原来的那个问题

 -- 获得中文名称

substring_index(product_name,'(',1)

-- 获得英语名称

REPLACE(substring_index(product_name,'(',-1),')','') 

看起来是不是简单了很多。

总结

没事多看看官方文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值