2014-07-02 92 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;