尝试选择列中的文本

时间:2014-12-03 15:37:09

标签: sql-server tsql

请我只选择此列中的电子邮件, 我使用的是T-sql,表名是emailfound,列是emailfoundcolumn。我正在尝试使用

SELECT CASE 
        WHEN CHARINDEX(':', emailfoundcolumn) > 30
            THEN LEFT(emailfoundcolumn, CHARINDEX(':', emailfoundcolumn) - 1)
        ELSE emailfoundcolumn
        END
FROM emailfound

这是列中值的样本     来自:jn61 @ hotmail.com

-----Original Message-----From: chll@hotmailcom 
-----Original Message-----From: hain@sondarjee.fr
-----Original Message-----From: f7@yahoo.com
-----Original Message-----From: fualbi@live.co.uk 
-----Original Message-----From: cbo990@gmail.com 
-----Original Message-----From: maather@btinternet.com

但该值只是在列

中的电子邮件之前返回前面的文本

2 个答案:

答案 0 :(得分:1)

您需要使用right,因为您需要字符串的最后一部分

这应该有效

right(@emailfoundcolumn, len(@emailfoundcolumn)-CHARINDEX(':', @emailfoundcolumn) - 1)

答案 1 :(得分:0)

使用 Left Reverse CharIndex 字符串函数

DECLARE @email VARCHAR(500)='-----Original Message-----From: chll@hotmailcom '

SELECT Reverse(LEFT(Reverse(@email), Charindex(':', Reverse(@email)) - 2)) 

输出: chll@hotmailcom