首页 > 解决方案 > SQLite 使用 LIKE 运算符搜索数据库以获取用户输入

问题描述

我试图找到一种方法来使用来自文本框的输入来搜索数据库,但我似乎无法弄清楚如何制定查询。

应该发生什么:用户在文本框中输入一个字符串并单击搜索按钮。按钮单击事件触发,并运行一个 SQL 查询,该查询接受该输入并返回它匹配或包含的行。

我想使用类似的东西(当然使用参数):

SELECT * FROM History WHERE DeviceName LIKE '@SearchBox';

但是,这将其限制为仅DeviceName列。这意味着他们无法搜索不在DeviceName列中的术语。如果他们想按日期、设备类型、资产标签或其他任何内容进行搜索,那么这个 SQL 语句显然是行不通的。

我还考虑让用户通过下拉框指定搜索参数(即按名称、资产标签、日期等搜索),然后根据他们的选择,使用适当的列名运行正确的 SQL 语句WHERE条款。但这似乎是一堆可以避免的额外工作。

我确实阅读了一些似乎涉及创建另一个索引表的先前问题,但我不确定这是否是最好的方法。

谢谢!

编辑:尝试了解决方案:

SELECT *
FROM table
WHERE ((col1+col2+col3+col4) LIKE '%something%')

正如在SQLite WHERE-Clause 中为每一列发布的那样?

查询执行但不返回任何行。

标签: c#databasesqlite

解决方案


好的,我发现使用

SELECT * FROM History WHERE ((col1 || col2 || col3 || etc.) LIKE '%something%;

作品。但是,我必须在列上设置一个默认值' '(一个空格,所以它不为空),这样它就会返回每个相关的行,即使单元格中没有输入任何值。如果它是 NULL 它会跳过那些行(这就是它没有返回任何东西的原因)。


推荐阅读