T-SQL字符串处理:获取/右侧内容,无/则返回原字符串
解决方案
首先纠正你语句里的两个问题:
- 你把分隔符写成了反斜杠
\,但实际要匹配的是正斜杠/ LEFT()函数是提取字符串左侧内容,你需要的是右侧,所以得换用SUBSTRING()或者RIGHT()
直接用CASE WHEN就能实现需求,语句如下:
SELECT CASE WHEN CHARINDEX('/', LogUser) > 0 THEN SUBSTRING(LogUser, CHARINDEX('/', LogUser) + 1, LEN(LogUser)) ELSE LogUser END AS TargetResult FROM table1
逻辑说明:
CHARINDEX('/', LogUser)会返回正斜杠在字符串中的位置,如果返回值大于0,说明字符串包含/- 当存在
/时,用SUBSTRING()从/的位置+1开始,提取到字符串末尾,也就是/右侧的内容 - 如果不存在
/,直接返回原字段值
你也可以用RIGHT()函数实现,写法如下:
SELECT RIGHT(LogUser, LEN(LogUser) - CHARINDEX('/', LogUser)) AS TargetResult FROM table1 WHERE CHARINDEX('/', LogUser) > 0 UNION ALL SELECT LogUser AS TargetResult FROM table1 WHERE CHARINDEX('/', LogUser) = 0
不过CASE WHEN的写法更简洁直观,推荐使用。
内容的提问来源于stack exchange,提问作者Ann Snow
相关产品推荐
相关产品推荐

