【发布时间】:2019-10-12 20:28:31
【问题描述】:
我有一个数据库,我想过滤一些条目。这是过滤器的样子:
SELECT * FROM Item WHERE 1=1 AND Favorite = 1 AND ( DocType = ? OR DocType = ? OR DocType = ? OR DocType = ? ) AND (Title Like ? OR Location LIKE ? OR DocType LIKE ? OR ProType LIKE ?)
过滤器几乎可以工作。我想把重点放在最后一部分:
AND (Title Like ? OR Location LIKE ? OR DocType LIKE ? OR ProType LIKE ?)
因为看起来像
OR DocType LIKE ? OR ProType LIKE ?
被忽略。以 DocType 切换 Location 为例:
AND (Title Like ? OR DocType LIKE ? OR Location LIKE ? OR ProType LIKE ?)
我可以找到与 DocType 相关的任何内容。无法再找到位置(就像 ProType 一样)。所以我想我写错了。
我需要如何将其写下来,以便过滤 Title、Location、DocType 和 ProType?
【问题讨论】:
-
请添加示例输入和输出数据以使您的问题更加具体。
-
例如:在搜索栏中输入“测试”。 “Test”是“DocType”的值。输出为空,但它应该是具有“Test”的“DocType”值的文件。但是当我输入“位置”的值“TestLocation”时,我可以看到具有“位置”值“TestLocation”的文件。现在,当用“DocType”切换“Location”时,我可以搜索并找到“Test”,但我再也找不到“TestLocation”了。
-
“AND (Title Like ? OR Location LIKE ? OR DocType LIKE ? OR ProType LIKE ?)” 应该真的有效吗?
-
您是否提供任何 LIKE 通配符?
-
这很奇怪
AND ( DocType = ? OR DocType = ? OR DocType = ? OR DocType = ? )这是问题中的错字还是对实际查询的同一列部分的重复检查?