出于某种原因,当我尝试做大于或小于时,它说 100 小于 2。我认为它只是在确定大于/小于值时读取第一个数字。不知道为什么或者它是否应该是这样的?尝试为我的数据库课程创建 Short Ship 报告。
您的数量列被存储为字符串,而不是数字,导致(例如)10
“小于”9
- 字符串比较显然基于字符串中的字符而不是整数,因此您看到的结果。
当您进行比较时,Oracle 不会将值转换为数字(在您的情况下为“<”和“>”),但是当您对它们执行数学运算时,它会隐式地将它们转换为数字,因此 -
按预期工作。
如果您在进行比较时cast
将VARCHAR
列设置为 a NUMBER
,您的查询将正常工作:
select *
from orders
where TO_NUMBER(qty)<TO_NUMBER(qtyshipped);
Run Code Online (Sandbox Code Playgroud)
话虽如此,您最好使用正确的数据类型重新创建表。
演示所有这些的示例 DB Fiddle 在这里。
归档时间: |
|
查看次数: |
50 次 |
最近记录: |