【发布时间】:2014-02-21 07:04:53
【问题描述】:
需要根据a列从数据库中获取数据,并提供范围。
我有一张学生表,里面有 ID。
当我在给定的 id 范围内(即 10-20 之间)查询表时,它会返回正确的结果。
ID 是 Varchar
SELECT *
FROM student
WHERE id BETWEEN 'AB10' AND 'AB20'
但让我们假设其中一个范围未作为范围提供
1.ID从空
2. ID转AB20
那么理想情况下它应该从开始返回到提供的 id 但我没有得到任何行。
我的查询是
SELECT *
FROM student
WHERE id BETWEEN 'null' AND 'AB20'
【问题讨论】:
-
您的查询没有意义。你假设某种你没有告诉我们的表的顺序? “null”和“AB20”之间是什么意思,除非它是有序的?
-
可以输入 from id 和 to_id。如果遗漏了任何一个,我需要运行查询。不确定 ID 是否会被排序
-
from_id和to_id在查询中表示在哪里? -
你所要做的就是使用 NVL(): WHERE id BETWEEN NVL(to_char(:id_column,'AB20') AND 'AB20'。我假设你的 id 是数字。否则不需要转换为 to_char()。