【发布时间】:2021-01-12 20:26:50
【问题描述】:
5 分钟前正在测试针对 SQLite 数据库的查询,并使用 < 运算符遇到以下问题。这是信息:
[表架构]
CREATE TABLE products (
name TEXT,
number TEXT,
category TEXT,
quantity TEXT,
available TEXT,
price TEXT,
info TEXT,
prodlinks TEXT,
pictures BLOB
);
根据quantity 值,我正在搜索特定的数据库中保存了 100 个项目:
SELECT * FROM products WHERE quantity < 2;
此查询用于php脚本(部分):
$result = $db->prepare("SELECT * FROM products WHERE quantity < 2");
$result->execute();
$result = $result->fetchAll(PDO::FETCH_ASSOC);
结果是所有 quantity 低于 2 的项目都被退回,但有 quantity 值高于 2 的退回项目 - 例如 11 或 15。以前从未见过,所以你知道在哪里是问题吗?如果 < 运算符与 > 反转,则不返回数量为 11 或 15 的项目。
【问题讨论】:
-
数量与字符串相关联 - 您应该先转换它。
-
为什么数量是文本?对于字符串,有 '15'
-
总的来说,正如其他人已经提到的那样,您的架构是完全错误的。从中查询任何数据都会遇到更多问题。数据库提供多种数据类型是有原因的。
-
从上面的 cmets 也如下所示,您可以将价格以美分表示为整数,而不是美元金额以浮点数或文本表示。
-
感谢 cmets。我不是数据库人,由一个离开半工作系统的人写的