2012-08-31 84 views
0

我在這裏遇到問題。SQL:如何根據列的部分字符串來選擇列

我想選擇一個基於該列的最大(時間戳)的列,但我堅持檢索它。比方說,我有以下數據:

Comments 
======== 
abcd 2012/08/14 8:03:03 AM more data inside <- I want to retrieve this 
hshsh 2012/08/13 1:03:03 AM some other comments 
hahhah 2012/08/10 8:03:03 PM test it. 

我的SQL檢索最大(時間戳)是

select max(substr(comments, instr(comments, '2012'), instr(comments, 'M') - 6)) from TABLEA 

但我如何選擇此基礎上聲明此列?

編輯:

是否有可能做到這一點:

select comments from tableA where comments like (select max(substr(comments, instr(comments, '2012'), instr(comments, 'M') - 6)) from TABLEA) 

我希望得到的評論欄的第一行,但沒有輸出。 我希望我不太模糊......我正在使用Oracle SQL。

回答

0

你可以試試:

select 
    comments, substr(comments, instr(comments, '2012'), instr(comments, 'M') - 6) YEAR 
    from TABLEA 
    order by substr(comments, instr(comments, '2012'), instr(comments, 'M') - 6) desc 
    where rownum = 1 
+0

感謝Alfasin,這是相當接近,但我想要得到的意見,而不是最大(年)來代替,不知道這是可能的。 :-) –

+0

我現在無法測試 - 但我相信這應該起作用。查看更新的答案。 – alfasin

+0

非常接近,謝謝! :) –

0

嘗試:

select * 
from 
(
    select comments 
    from TABLEA 
    order by substr(comments, instr(comments, '2012'), instr(comments, 'M') - 6) desc 
) 
where rownum = 1