从电子邮件地址中提取姓名和名字?

时间:2009-12-10 17:19:20

标签: sql sql-server

问题: 我有一个包含列ID,名称,名称,邮件

的表

Mail包含某人的电子邮件地址,例如john.doe@example.com

现在我需要检查Name =''或Prename ='' 并从Mail中提取“John”并将其放入Prename,并将“Doe”放入列Name

我能用SQL做到这一点,如果是的话怎么做?

我使用的是MS-SQL 2005

2 个答案:

答案 0 :(得分:2)

您可以使用UPDATE语句,如下所示。

--relies on one and only one dot in the email account!
UPDATE  Customer
SET  PreName = LEFT(Email, CHARINDEX('.',Email)-1) --FirstName
     ,Name = SUBSTRING(Email,CHARINDEX('.',Email)+1, CHARINDEX('@',Email)-CHARINDEX('.',Email)-1) 

要测试此解决方案,请尝试使用单个字符串作为测试。

--test it out with this script!
DECLARE @Addr varchar(100)

SELECT @Addr = 'humpty.dumpty@here.com'

DECLARE @DotAt int, @At int

SELECT @DotAT = CHARINDEX('.',@Addr)
       ,@At = CHARINDEX('@',@Addr)

SELECT  LEFT(@Addr, @DotAt-1), SUBSTRING(@Addr,@DotAt+1,@At-@DotAt-1)

答案 1 :(得分:0)

有可能。你需要做一些字符串操作。查看SUBSTRINGPATINDEXCHARINDEX功能。