每列的SQLite WHERE-Clause?

时间:2015-06-09 12:48:04

标签: sql sqlite

SQLite是否提供了一种在表的每一列中搜索searchkey的方法?

SELECT * FROM table WHERE id LIKE ...

选择...列中找到id的所有行。但是,仅在id列中搜索,我想在每列中搜索是否找到了搜索字符串。我相信这不起作用:

SELECT * FROM table WHERE * LIKE ...

这可能吗?或者下一个简单的方法是什么?

我使用Python 3来查询SQLite数据库。在执行查询并返回数据后,我是否应该继续搜索字典?

3 个答案:

答案 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;