运行此查询后,出现以下错误.
DECLARE@Type int,@SearchStr2 nvarchar(200)
SET @Type=1
SET @SearchStr2 = 'A'
SELECT * FROM Document WHERE DocNo in(
CASE @Type
WHEN 1 THEN
(SELECT DocNO FROM Publisher WHERE CONTAINS((PublisherName), @SearchStr2)
)
WHEN 2 THEN
(SELECT DocNO FROM Publisher WHERE CONTAINS((PublishedPlace), @SearchStr2)
)
WHEN 3 THEN
(SELECT DocNO FROM Publisher WHERE CONTAINS((PublishedDate), @SearchStr2)
)
END
)
Run Code Online (Sandbox Code Playgroud)
消息512,级别16,状态1,行4子查询返回的值超过1.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做.
CASE @Type WHEN ... END
需要评估一个值.根据错误消息,您的子查询没有这样做.
你可能想写这样的东西:
WHERE ( @Type = 1 AND DocNo IN ( SELECT DocNo FROM Publish WHERE <Use PublisherName> ) )
OR ( @Type = 2 AND DocNo IN ( SELECT DocNo FROM Publish WHERE <Use PublishedPlace> ) )
OR ...
Run Code Online (Sandbox Code Playgroud)