2014-07-02 50 views
1

的结果我得到的SQL这给了我预期的结果:明显和订单由REGEXP_SUBSTR

select regexp_substr(longarg, '30G([^|]*)', 1, 1, '', 1) founded from dod; 

如果我尝试不同的我的结果

select distinct regexp_substr(longarg, '30G([^|]*)', 1, 1, '', 1) founded from dod; 

我得到的消息:

ORA-00932: 00932. 00000 - "inconsistent datatypes: expected - got CLOB" 

另一个问题是。我如何使用order by订购结果集? 正如你看到的我是不是真的一个的Oracle SQL专家...

感谢您的帮助

斯特凡

回答

2

看起来你的列是CLOB,不幸的是有你碰到一些限制(不能在DISTINCT或ORDER BY等中使用它们。有关完整列表,请参阅:http://docs.oracle.com/cd/E11882_01/appdev.112/e18294/adlob_working.htm#ADLOB2010

但是,如果从regexp_substr返回的内容少于4000个字符,则可以使用to_char()然后将允许您使用它在不同的/顺序:

select distinct to_char(regexp_substr(longarg, '30G([^|]*)', 1, 1, '', 1)) founded 
from dod 
order by founded;