regexp_substr的结果的distinct和order-by

时间:2014-07-02 16:00:48

标签: sql oracle distinct clob

我得到了那个给我预期结果的SQL:

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专家...

感谢您的帮助

的Stefan

1 个答案:

答案 0 :(得分: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;