SQL Server rtrim ltrim和charindex

时间:2013-10-02 20:29:51

标签: sql-server charindex

我有以下情况 John Doe johndoe@email.com 约翰johndoe@email.com

我想离开,我可以检测到第一个正确的空间,只是将所有内容排除在左边,这样我就可以得到该人的电子邮件地址。所以: John Doe johndoe@email.com应该是johndoe@email.com john johndoe@email.com应该是johndoe@email.com

这就是我所拥有的

Declare @test varchar(50)
Select @test = 'John Doe johndoe@email.com'
SELECT Right(@test, CHARINDEX(' ', @test))

这只给了我email.com!

谢谢。

2 个答案:

答案 0 :(得分:3)

Declare @test varchar(50)
Select @test = 'John Doe johndoe@email.com'
SELECT RIGHT(@test, CHARINDEX(' ', REVERSE(@test)-1))

或更安全的方法(如果有没有空格分隔符的字符串):

Declare @test varchar(50)
Select @test = 'johndoe@email.com'
SELECT 
    CASE 
        WHEN CHARINDEX(' ', REVERSE(@test)) > 0 THEN RIGHT(@test, CHARINDEX(' ', REVERSE(@test))-1)
        ELSE @test
    END

答案 1 :(得分:0)

CharIndex返回5,这是测试字符串中第一个空格在“John”和“Doe”之间的位置。

因此,正确的是返回测试字符串中最右边的5个字符,即“l.com”