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

时间:2019-01-23
本文章向大家介绍sql 字符位置不固定/长度不固定时字符切片 substring charindex,主要包括sql 字符位置不固定/长度不固定时字符切片 substring charindex使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

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