mysql在某个字段中(字符)匹配出特定的字符

博客提到要从数据表备注字段中查找当前患者的入院时间,需依据关键字“住院治疗”进行查找,还提及了三次取值的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话不多说,上例子,下面截图是数据表的一个备注字段,我需要找到当前患者的入院时间,需要在备注中根据关键字“住院治疗”来查找。

 

select id,name,if(memo like '%住院治疗%',substring_index(substring_index(substring_index(memo,"住院治疗",1),"[",-1),"]",1),'') as '住院治疗' from guest;

--memo 是备注字段
--思路,首先判断是否有备注住院治疗,有才查询日期,如果没有那就显示为空,所以我这里用了 if 进行判断。
--substring_index(字段,字符,位置)  位置为正数,正序查找,结果值 取 左边
--第一次 substring_index(memo,"住院治疗",1)  在备注中查找住院治疗第一次出现的位置
--第二次 substring_index(substring_index(memo,"住院治疗",1),"[",-1) 根据上一截字符串然后逆向查找 [ ,位置为负数,逆向查找,结果值 取 右边
--第三次 substring_index(substring_index(substring_index(memo,"住院治疗",1),"[",-1),"]",1)  根据上一截字符串然后逆向查找 ] ,位置为正数,正序查找,结果值 取 左边

下面是三次取值的变化:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值