在oracle 10g 数据库中,我要将下面语句所得出的字符串截取从第20个字符后面40个字符,用select substr 。
发布网友
发布时间:2022-04-08 21:05
我来回答
共3个回答
热心网友
时间:2022-04-08 22:35
select substr((select eventdescribe
from (select eventdescribe
from ns_event
order by id desc) t
where rownum <= 1),20,40) from al;
是您的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,这个语句马上就正确了。
或者使用上面我写的两个语句中的一个也可以。
热心网友
时间:2022-04-08 23:53
不是你写错了,而是不够细心
ORA-00907: 缺少右括号
可以去搜下oracle错误大全(一览表)
还有在里面写order by 是不起作用的,你要排序的那个列应该 是找不到的
下载不到可以加Q:270564642(加时请加注:百度)
请采纳
热心网友
时间:2022-04-09 01:27
select substr((select eventdescribe from (select rownum as row_index,eventdescribe from ns_event order by id desc) where row_index <=1),20,40) from al;
感觉你要的效果应该是这样的!~ 你试试!~ 不对的话告诉我 再给你改改!~
但是我记得substr这样函数里面取得是字段可以,但是不能有order by