0

我有一张包含电子邮件地址的表格。我正在尝试DomainName使用电子邮件地址中的域填充一列。select 语句本身可以正常工作。但是当我将它添加到更新查询中时,我得到以下信息:

子查询返回超过 1 个值。=当子查询跟在, !=, <, <=,>之后>=或当子查询用作表达式时,这是不允许的。

我应该用什么代替=

update Table1 set Table1.DomainName=
(select SUBSTRING(Table1.Email,(CHARINDEX('@',Table1.Email)+1),LEN(Table1.Email) - 
(CHARINDEX('@',Table1.Email))) as DomainName FROM Table1)
4

3 回答 3

3

只需删除子选择。

update Table1 
set Table1.DomainName= SUBSTRING(Table1.Email,(CHARINDEX('@',Table1.Email)+1),LEN(Table1.Email) - (CHARINDEX('@',Table1.Email))) 
FROM Table1
于 2013-07-09T14:33:50.263 回答
2

去掉SELECT语句,应该是这样的:

update Table1 
set Table1.DomainName= SUBSTRING(Table1.Email,
                                 (CHARINDEX('@', Table1.Email) + 1),
                                 LEN(Table1.Email) - (CHARINDEX('@',Table1.Email))
于 2013-07-09T14:33:58.560 回答
1

只需删除子查询,这将起作用:

update Table1
set Table1.DomainName = SUBSTRING(Table1.Email,
    (CHARINDEX('@',Table1.Email)+1),
    LEN(Table1.Email) - (CHARINDEX('@',Table1.Email)))
于 2013-07-09T14:34:31.540 回答