首页 > 解决方案 > 在混合符号之间获取子字符串

问题描述

我想获得子字符串,我的输出应该看起来像 gmail、outlook、Skype。我的字符串值是

我正在使用 sql server 2012

我使用图表索引来获取子字符串

select SUBSTRING(Mail_ID, CHARINDEX('@',MAil_ID)+1, (CHARINDEX('.',MAil_ID) - (CHARINDEX('@', Mail_ID)+1))) 
from tbl_data

我希望我的输出像:

'gmail'
'yahoo'
'sarvang'

请帮助我,我是 sql server 的新手

标签: sqlsql-server

解决方案


这回答了问题的原始版本。

这可能是最简单的使用case表达式来检测在 之前是否有句点'@'

select (case when email like '%.%@%'
             then stuff(left(email, charindex('@', email) - 1), 1, charindex('.', email), '')
             else left(email, charindex('@', email) - 1)
        end)
from (values ('abc@gmail.com'), ('cde.nitish@yahoo.com'), ('xyz.vijay@sarvang.com.com')) v(email)

推荐阅读