【问题标题】:Selecting rows from sqlite table with three criterions使用三个标准从 sqlite 表中选择行
【发布时间】:2020-10-11 05:33:23
【问题描述】:

我是 Sqlite 的新手。在以下代码行中c 是一个游标:

c.execute(
    "SELECT rowid,* from statements "
    "WHERE [row1] = (?*) AND [row2] = (?) AND [row3] = 'text3'", 
    (text1,text2,)
)
items = c.fetchall()

在上面我试图找到 row1 中的文本是以 text1 开头的任何行,例如我想选择行 第 1 行是“奶牛”、“马”或温度计,其中 text1="the"

第 2 行是“大象”,其中 text2="elephant"

第 3 行是“text3”

我使用的是 (?) 运算符,因为它是函数的一部分,将使用不同的参数调用。

【问题讨论】:

    标签: python sqlite


    【解决方案1】:

    对于第一个条件,您必须使用运算符 LIKE 而不是 =,为此,您必须将占位符 ? 与通配符 '%' 连接起来:

    c.execute("SELECT rowid,* from statements  WHERE [row1] LIKE ? || '%' AND [row2] = ? AND [row3] = 'text3'", (text1,text2,))
    

    【讨论】:

    • 谢谢,我正要试试。为什么将“(?)”替换为“?” ?
    • 不需要括号。我的意思是在像 a = (4) 这样的表达式中,你真的需要将 4 括在括号中吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多