SQLite是否提供了一种在表的每一列中搜索searchkey的方法?
SELECT * FROM table WHERE id LIKE ...
选择...
列中找到id
的所有行。但是,仅在id
列中搜索,我想在每列中搜索是否找到了搜索字符串。我相信这不起作用:
SELECT * FROM table WHERE * LIKE ...
这可能吗?或者下一个简单的方法是什么?
我使用Python 3来查询SQLite数据库。在执行查询并返回数据后,我是否应该继续搜索字典?
答案 0 :(得分:4)
你可以做的一个简单的伎俩是:
SELECT *
FROM table
WHERE ((col1+col2+col3+col4) LIKE '%something%')
如果这4列中的任何一列包含单词“something”,则会选择记录。
答案 1 :(得分:1)
没有;您必须列出或连接查询中的每一列,或重新组织您的数据库,以便减少列数。
SQLite有full-text search tables,您可以在其中一次搜索所有列,但此类表格无法有效地与其他任何查询一起使用。
答案 2 :(得分:0)
如果我理解你的问题,我不太确定。 如果你想要返回整行,当id = searchkey时,那么:
'(8)
'get all unique column values starting at cell c
Function GetValues(ch As Range, Optional vSplit As Variant) As Object
Dim dict As Object, rng As Range, c As Range, v
Dim spl As Variant
Set dict = CreateObject("scripting.dictionary")
For Each c In ch.Parent.Range(ch, ch.Parent.Cells(Rows.Count, ch.Column).End(xlUp)).Cells
v = Trim(c.Value)
If Len(v) > 0 And Not dict.exists(v) Then
If Not IsMissing(vSplit) Then
spl = Split(v, ";")
v = spl(0)
End If
dict.Add c.Address, v
End If
Next c
Set GetValues = dict
End Function
如果您希望使用正确的搜索键从该行中获取特定列:
select * from table where id=searchkey;
如果你想搜索" id"的多个列:首先缩小哪个列可以找到 - 你不想搜索整个表格!然后:
select col1, col2, col3 from table where id=searchkey;