SQLite 是否提供了一种在表的每一列中搜索搜索键的方法?
SELECT * FROM table WHERE id LIKE ...
选择在
...
列中找到 id
的所有行。但我只想在每一列中搜索是否找到了搜索字符串,而不是只在 id
列中搜索。我相信这行不通:
SELECT * FROM table WHERE * LIKE ...
这可能吗?或者下一个简单的方法是什么?
我使用Python 3来查询SQLite数据库。执行查询并返回数据后是否应该走字典搜索的路线?
您可以做的一个简单技巧是:
SELECT *
FROM table
WHERE ((col1+col2+col3+col4) LIKE '%something%')
如果这 4 列中的任何一列包含单词“something”,这将选择记录。
我无法评论@raging-bull 的回答。所以我必须写一篇新的。我的问题是,我有包含
null
值的列,但没有得到结果,因为“搜索字符串”是 null
。
使用合并我可以解决这个问题。这里 sqlite 选择列内容,或者如果是
null
则选择空字符串(“”)。所以有一个实际的搜索字符串可用。
SELECT *
FROM table
WHERE (coalesce(col1,"") || coalesce(col2,"") || coalesce(col3,"") || coalesce(col4,"")) LIKE '%something%')
不;您必须列出或连接查询中的每一列,或者重新组织数据库以减少列数。
SQLite 具有 全文搜索表,您可以在其中一次搜索所有列,但此类表不能与任何其他查询有效地配合使用。
从表中选择*,其中 col1 ||列2 || col3 就像 '%something%';
我不太确定我是否理解你的问题。 如果你想返回整行,当 id=searchkey 时,那么:
select * from table where id=searchkey;
如果您想从具有正确搜索键的行中获取特定列:
select col1, col2, col3 from table where id=searchkey;
如果您想在多个列中搜索“id”:首先缩小可以在哪些列中找到的范围 - 您不想搜索整个表!然后:
select * from table where col1=searchkey or col2=searchkey or col3=searchkey;