问题: 我有一个包含列ID,名称,名称,邮件
的表Mail包含某人的电子邮件地址,例如john.doe@example.com
现在我需要检查Name =''或Prename ='' 并从Mail中提取“John”并将其放入Prename,并将“Doe”放入列Name
中我能用SQL做到这一点,如果是的话怎么做?
我使用的是MS-SQL 2005
答案 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)