在oracle 10g 数据库中,我要将下面语句所得出的字符串截取从第20个字符后面40个字符,用select substr 。

2025-05-19 02:27:20
推荐回答(1个)
回答1:

select substr((select eventdescribe
from (select eventdescribe
from ns_event
order by id desc) t
where rownum <= 1),20,40) from dual;
是您的ORDER BY ROWNUM DESC造成的,为什么要这么排呢?

可以换一种写法的:select substr(eventdescribe ,20,40)
from (select eventdescribe
from (select eventdescribe
from ns_event
order by id desc) t
where rownum <= 1
order by rownum desc)

前边的查询确实没有问题,可是你把这个作为一个字段,然后SELECT ... FROM DUAL这是有问题的。所以您可以看看,只要去掉您的ORDER BY ROWNUM DESC,这个语句马上就正确了。
或者使用上面我写的两个语句中的一个也可以。