c# - 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 中为每一列发布的那样?
查询执行但不返回任何行。
解决方案
好的,我发现使用
SELECT * FROM History WHERE ((col1 || col2 || col3 || etc.) LIKE '%something%;
作品。但是,我必须在列上设置一个默认值' '
(一个空格,所以它不为空),这样它就会返回每个相关的行,即使单元格中没有输入任何值。如果它是 NULL 它会跳过那些行(这就是它没有返回任何东西的原因)。
推荐阅读
- css - 更改此轮播中的项目数
- javascript - Javascript:当其中一个单元格为空时隐藏表格行。WordPress 页面
- javascript - 如何查找某人的帐户何时在不和谐(discord.js)上创建
- javascript - 将 LiveCycle 十进制字段与模式匹配
- javascript - 使用 Webpack 作为构建工具的 SASS 多页站点
- python - 具有 3D 输入和 3D 输出的序列模型的 SHAP 解释器
- react-admin - React-admin:用户身份不会立即更新 Appbar 中的用户名
- c++ - 为什么“i”是未声明的标识符?(c++)
- postgresql - Postgres:在选择时将 JSONB 数据添加为现有 JSONB 数据中的新字段
- c - 制作指针数组时不兼容的函数指针类型