8

Is there any value which I can place in a SQL IN clause which will guarantee that the clause will evaluate to false?

SELECT *
FROM Products
WHERE ProductID IN (???)

Is there anything I could replace ??? with to guarantee no rows will be returned?

4

5 回答 5

11

替换为NULL。没有更好的保证!

因为没有其他值可以等于NULL,甚至NULL它本身。

这对于任何类型来说都是一种普遍的价值(正如@zohar-peled 提到的)。

于 2015-06-17T09:26:35.830 回答
0

利用NULL

SELECT *
FROM Products
WHERE ProductID IN (NULL)

因为这不会返回任何内容

于 2015-06-17T09:28:12.583 回答
-1

放入一些最初无效的 ProductID,例如-1.

SELECT *
FROM Products
WHERE ProductID IN (-1)
于 2015-06-17T09:27:37.067 回答
-1

尝试

SELECT *
FROM Products
WHERE ProductID IN (0)

我很确定您没有 ID=0 的产品

那将返回错误。

于 2015-06-17T09:28:21.820 回答
-1
SELECT *
FROM Products
WHERE ProductID IN (SELECT '')

另一种可能的方式。

于 2015-06-17T09:28:47.087 回答