我有一个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中有多种可能性?
答案 0 :(得分:1)
如果列定义为NOT NULL
,您可以使用:
SELECT * FROM table WHERE A IN (A);
--for not nullable column it's equivalent of 1=1
<强> DBFiddle Demo 强>