我以前在这里得到了很大的帮助,所以我希望有人可以帮助我解决这个问题。谁能告诉我为什么查询 #1 会导致错误“子查询返回超过 1 个值...”但查询 #2 工作正常吗?由于我使用“IN”而不是“=”来限定结果,我认为多个值是可以接受的。
关于我如何做到这一点的任何建议?
--Query #1
SELECT _Column1_ from _View1_
WHERE
_Column2_ IN( CASE
WHEN ISNUMERIC(1000110) = 1 AND LEN(1000110) > 3
THEN (
SELECT _Column2_
FROM _Table1_
WHERE _Column2_ = CONVERT(Int, LEFT(1000110, 4))
OR _Column3_ = CONVERT(Int, LEFT(1000110, 4))
)
WHEN ISNUMERIC(1000110) = 1 AND LEN(1000110) <= 3
THEN 0
ELSE (SELECT _Column2_ from _Table1_)
END)
注意:在最终查询中,1000110 实际上是一个用户名变量,可以返回一个数字用户名或字母数字
--Query #2
WHEN ISNUMERIC(1000110) = 1 AND LEN(1000110) > 3
THEN CONVERT(Int, LEFT(1000110, 4))
WHEN ISNUMERIC(1000110) = 1 AND LEN(1000110) <= 3
THEN 0
ELSE (SELECT _Column2_ from _Table1_)
END)