SQLite SELECT语句中的可选参数

Skyork

我正在使用sqlite3Python 3中模块与SQLite一起使用。

我有一个SELECT语句,该语句可以根据用户输入使用不同数量的参数执行。例如,如果用户未提供任何参数,则该语句很简单:

SELECT * FROM TestTable WHERE User=?

默认情况下,每个用户的ID都是已知的。

另一方面,如果用户提供了一个或多个参数来优化选择,则该语句可能变为类似以下内容:

SELECT * FROM TestTable WHERE User=? AND ColA=? AND ColB=?

为了处理这种各种各样的用户输入,SQLite中是否存在一种本机方式来支持SELECT语句中的可选参数?或者我只需要首先基于用户输入使用Python以编程方式生成适当的SQL字符串,然后使用派生的字符串执行SQL?

CL。

可以将未使用的参数设置为NULL,并在查询中进行检查:

sql = "SELECT ... WHERE User=?1 AND (?2 IS NULL OR ColA=?2) ..."
cursor.execute(sql, [user, a_or_null])

但是,这使查询既复杂又执行缓慢。

动态构造查询字符串会更容易:

sql = "SELECT ... WHERE User=?"
params = [user]
if a_is_specified:
    sql += " AND ColA=?"
    params += [a]
...
cursor.execute(sql, params)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQLite SELECT语句中的可选参数

来自分类Dev

如何在SQLite Select语句中正确表达参数

来自分类Dev

仅返回SQLite Select语句中的Last值

来自分类Dev

WHERE子句中的SQLite if语句

来自分类Dev

WHERE子句中的SQLite if语句

来自分类Dev

报表SQL语句中的可选参数

来自分类Dev

尝试将参数添加到android应用的sqlite准备好的语句中而失败

来自分类Dev

使用sqlite在插入语句中的位置

来自分类Dev

预准备语句中的SQLITE_MISUSE

来自分类Dev

SQLite语句中无法识别的令牌

来自分类Dev

仅返回SQLite Select语句中的最后一个值

来自分类Dev

错误:SQLITE_RANGE:SELECT语句中的列索引超出范围

来自分类Dev

SQLite3(python)查询可在一个SELECT语句中搜索多个列

来自分类Dev

使用Select语句从SQLite删除

来自分类Dev

在for语句中解开可选

来自分类Dev

SELECT语句中的参数化列

来自分类Dev

SQLite从LIKE语句中选择不起作用?

来自分类Dev

我可以在多个DML语句中引用Sqlite CTE吗?

来自分类Dev

SQLite:db.insert在if语句中不起作用

来自分类Dev

创建表语句中的SQLite语法错误-Flutter / Dart

来自分类Dev

在sqlite3语句中使用Python变量

来自分类Dev

sqlite 在一个语句中按星期几过滤

来自分类Dev

SQLite中的Select语句不返回结果

来自分类Dev

Android SQLite select语句的异常行为

来自分类Dev

SQLITE 的 SELECT IN 语句的语法是什么?

来自分类Dev

如何使用Swift 3插入具有可选参数的Sqlite

来自分类Dev

Sqlite:“ in”子句中可以有多少个参数

来自分类Dev

消毒sqlite语句

来自分类Dev

SQlite concat选择语句