是否有一些等同于SQLite中的[WHERE col IN(%)]?

时间:2018-06-07 19:57:12

标签: sql sqlite

我有一个SQLite查询,我需要能够获取行,其中某个列(下面的A)可以是任何内容(也就是通配符)或几个选项中的一个。

这适用于通配符或单个值,但不适用于多个:

SELECT * FROM table WHERE A LIKE "%"
SELECT * FROM table WHERE A LIKE "1"

这适用于单个或多个值,但不适用于通配符:

SELECT * FROM table WHERE A IN (1)
SELECT * FROM table WHERE A IN (1, 2, 3)

我希望能做的是这样的事情:

SELECT * FROM table WHERE A IN (%)

我可以使用if语句在前两个选项之间进行选择,除了我实际上有很多列需​​要执行此操作,更像是:

SELECT * FROM table WHERE A IN (1, 2, 3) AND B IN (4, 5, 6) AND C IN (%) AND D IN (7, 8)

所以嵌套的“if”循环变得相当笨拙。

那么,有没有办法在WHERE IN中使用通配符或者在WHERE LIKE中有多种可能性?

1 个答案:

答案 0 :(得分:1)

如果列定义为NOT NULL,您可以使用:

SELECT * FROM table WHERE A IN (A);
                          --for not nullable column it's equivalent of 1=1

<强> DBFiddle Demo