Запрос расширения файла в Oracle/Sql

У меня есть таблица tblAttachmentDetails, которая содержит идентификатор, имя файла и последнее обновление.

ID    FileName     LastUpdated
 1    Abc.txt      12/12/2011
 2    dsa.doc      12/12/2008
 3    ddd.xls      12/12/2003
 4    Accbc.xlsx   12/12/2006
 5    cc.txt       12/12/2006
 6    cc.doc       12/12/2006
 7    cc.xls       12/12/2008
 8    cc.xlsx      12/12/2012

Я хочу, чтобы верхние 10 строк файлов .xls и .xlsx были упорядочены по LastUpdated.

Оракул:

SELECT * 
FROM tblAttachmentDetails 
where ROWNUM <= 10 
and FileName Like '%.xls%' 
order by LastUpdated Desc

Пожалуйста, исправьте меня в этом запросе, потому что из этого запроса я получаю только файлы .xls, а не xlsx.


person intelliWork    schedule 17.02.2013    source источник
comment
Вы забыли кавычки вокруг «%.xls%»?   -  person Sebas    schedule 17.02.2013
comment
Я думаю, что ответ гораздо важнее, чем цитаты. :)   -  person intelliWork    schedule 17.02.2013
comment
Прочтите руководство, чтобы понять, как правильно работать с псевдостолбцом rownum: "nofollow noreferrer">docs.oracle.com/cd/B28359_01/server.111/b28286/   -  person a_horse_with_no_name    schedule 17.02.2013


Ответы (1)


Фильтрация ROWNUM должна применяться после фильтрации по типу и порядку.

SELECT *
  FROM ( SELECT *
           FROM tblAttachmentDetails
           WHERE FileName Like '%.xls%'
           ORDER BY LastUpdated DESC
       )
  WHERE ROWNUM <= 10
person Glenn    schedule 17.02.2013
comment
Но это вернет только 10 лучших файлов .xls, и мне нужны файлы .xls и .xlsx. - person intelliWork; 17.02.2013
comment
Он вернет как .xls, так и .xlsx. Вы уверены, что не имеете дело с проблемой чувствительности к регистру, т. е. WHERE LOWER(FileName) LIKE '%.xls%' ИЛИ ваш первый .xlsx файл старше, чем первые 10 .xls файлов. - person Glenn; 17.02.2013
comment
@intelliWork: так вы хотите всего 20 строк? - person a_horse_with_no_name; 17.02.2013