如何从SQL表

时间:2018-02-20 04:01:34

标签: oracle-sqldeveloper

我不知道我做错了什么。我正在使用SQL类,我打算这样做:列出2007年2月13日注册的所有学生的名字,姓氏和电话号码。按照姓氏和名字的顺序排列列表。

现在我正在尝试这个SQL语句。我运行时收到“没有选择行”的通知:

Select first_name, last_name, phone
FROM Student
WHERE registration_date LIKE '%13/02/2007%'
ORDER by last_name, first_name;

我做错了什么?我现在已经待了半个小时了。

2 个答案:

答案 0 :(得分:0)

您不应该依赖默认日期格式,也不应该依赖Oracle从字符串到DATE的隐式转换功能。使用DATE文字(总是具有相同的格式:YYYY-MM-DD),或使用具有适当格式掩码的TO_DATE函数。

select first_name, last_name, phone
from student
where registration_date = date '2007-02-13'
order by last_name, first_name;

select first_name, last_name, phone
from student
where registration_date = to_date('13.02.2007', 'dd.mm.yyyy')
order by last_name, first_name;

如果这样的查询仍然没有返回任何内容,可能REGISTRATION_DATE包含一个时间组件(我认为它不应该,但你永远不会知道)。然后你必须删除它,例如

where trunc(registration_date) = date '2007-02-13'
除非您创建基于函数的索引,否则

将导致该列上的索引不可用

另一种可能性是没有人在2007年2月13日注册。

答案 1 :(得分:-1)

你可以张贴表结构吗? 命令desc tablename,当你想要执行特定的注册日期时,为什么要使用相同的条件。

取决于所提供的信息 SELECT first_name, last_name, phone FROM student WHERE registration_date='2008-11-11' ORDER BY first_name ASC, last_name DESC

像这样使用。