sql 字符位置不固定/长度不固定时字符切片 substring charindex

这篇博客介绍了如何在SQL中处理字符位置不固定或长度不固定的字符串切片问题。通过使用SUBSTRING和CHARINDEX函数,可以实现从字符串中动态提取子串。SUBSTRING函数需要指定起始位置和长度,而CHARINDEX则用于查找子串在主字符串中的位置,起始位置可选。

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

目的:返回新管理员的名字

SUBSTRING(string, start, length)
  • 在string中,从start开始提取长度为length的字符串
  • 三个参数都必须要有
CHARINDEX(substring, string, start)
  • 在string中从start开始寻找substring
  • 前两个参数必有,start可选
--- 表:db_user
--- 列:userStatus
--- 值:
--- 管理员由【bob】变更为【tracy】
--- 管理员变更为【cindy】
--- 管理员由【bob】变更为【tracy】
--- 管理员由【bob】变更为【tracy】
--- 管理员由【bob】变更为【tracy】
--- 管理员变更为【bob】
--- 管理员由【tracy】变更为【maya】
--- 管理员由【tracy】变更为【maya】
--- 管理员由【cindy】变更为【maya】
--- 管理员由【cindy】变更为【maya】
--- 管理员由【tracy】变更为【bob】
--- ...

select substring([userStatus], charindex('为',[userStatus]) + 2,len([userStatus]) - charindex('为',[userStatus]) - 2) as [newManager]
FROM [db_user]

--- 列:newManager
--- 值:
--- tracy
--- cindy
--- tracy
--- tracy
--- tracy
--- bob
--- maya
--- maya
--- maya
--- maya
--- bob
--- ...

说明:

  • substring的第一个参数string[userStatus]
  • substring的第二个参数startcharindex('为',[userStatus]) + 2 ⇒ ‘为’字的后两个位置开始
  • substring的第二个参数lengthlen([userStatus]) - charindex('为',[userStatus]) - 2 ⇒ 该字段的总长 - start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值