首页 > 解决方案 > SQL 空参数值

问题描述

我有一个查询,它返回数据库中单个产品的月销售额总和。查询有效。

代替“=?”的值,是否有一个空值存储在“=?”中,而不影响查询。例如,如果我输入'Espresso'作为产品,省略掉milkOptions,并输入'Small'作为尺寸,我是否可以返回所有Small Espresso的查询结果。我想要这个功能,因为我想要不同程度的特异性

import sqlite3
product = input("Enter product")
milkOptions = input("Enter milkoptions")
size = input("Enter size")

conn=sqlite3.connect("system.db")
cur=conn.cursor()
test = cur.execute("""
select count(product), strftime("%m-%Y", orderDate) as month 
from customerOrders
where product = ? and milkOptions = ? and size = ? 
group by product, month""",(product, milkOptions, size)).fetchall()

+---------+---------------+--------+-------------+------------+
| orderid |    product    |  size  | milkOptions | orderDate  |
+---------+---------------+--------+-------------+------------+
|       1 | Espresso      | Small  | Soya        | 2019-10-29 |
|       2 | Cappucino     | Small  | SemiSkimmed | 2019-10-29 |
|       3 | Cappucino     | Small  | SemiSkimmed | 2019-10-29 |
|       4 | Cappucino     | Medium | SemiSkimmed | 2019-10-29 |
|       5 | Hot Chocolate | Medium | Coconut     | 2019-10-29 |
|       6 | Hot Chocolate | Medium | Coconut     | 2019-10-29 |
+---------+---------------+--------+-------------+------------+

标签: pythonsqlpython-3.x

解决方案


如果列没有 NOT NULL 约束,您可以将它们的值分配为 NULL。

if milkOptions == "":
    milkOptions = "NULL"

执行此语句后插入数据库。这是一个相当不雅的解决方法,但它有效。


推荐阅读