SQL选择varchar的最大值

时间:2014-03-04 16:43:21

标签: sql oracle select type-conversion varchar

我有一个包含'0 03-03-14','1 04-03-14'等数据的varchar列。 我需要选择最大的一个,在这种情况下'1 04-03-14'。

我的问题是我可以拥有'1'(最大值),但如果我还想要约会,我该怎么办呢?

现在,我有这个:

SELECT MAX(TO_NUMBER(SUBSTR(revision, 1, INSTR(revision, ' ')-1)))
    FROM table
    WHERE name = 'aname'
        AND t_name = 'tname'
    GROUP BY revision

有没有人有想法?

由于

3 个答案:

答案 0 :(得分:1)

我假设你想要像max(版本,日期版本)这样的东西,试试这个:

Select * from (
  Select * from (
    SELECT
        TO_NUMBER(SUBSTR(revision, 1, INSTR(revision, ' ')-1)) as rev
      , TO_DATE(SUBSTR(revision, 1, INSTR(revision, ' ')+1),'DD-MM-YY') as revDate
    FROM table
    WHERE name = 'aname'
    AND t_name = 'tname'
  ) extracted
  order by extracted.revDate, extracted.rev desc
) where rownum = 1

答案 1 :(得分:0)

你是说这个吗?

select max(revision)
from table
where name = 'aname' and t_name = 'tname';

将修订号和日期放在一列似乎很奇怪。这真的是你的数据格式吗?如果没有,请使用实际数据格式修改您的问题。

答案 2 :(得分:0)

关于你的答案,我认为最好的解决方案是将这两部分分开:)