clob字段在查询时是没法 group by 和 distinct 的,因此若是要根据clob查找重复的数据是很麻烦的,网上大多提出要用DBMS_LOB.SUBSTR 来解决,DBMS_LOB.SUBSTR 把clob转换成字符串段再进行group by,并且若是字数太多还得分段转换,这样操做起来太麻烦,并且容易出现 字符串缓冲区过小 的错误,在网上搜了很久,忽然发现 Dbms_Lob.Compare 能够解决这个问题。 sql
COMPARE 函數會對給定偏移的給定長度的兩個大型物件,執行確切的逐位元組比較。 api
比較的大型物件的資料類型必須相同。
api详细介绍地址:http://pic.dhe.ibm.com/infocenter/informix/v121/index.jsp?topic=%2Fcom.ibm.dbext.doc%2Fids_r0055117.htm&lang%3Dzh_CN jsp
如下,是我最终的sql,remark是clob字段 spa
Select * From Userinfo Where Id In( Select U.Id From Userinfo U,Userinfo User_Info Where U.Id!=User_Info.Id And U.Typeid=User_Info.Typeid And u.theTime=User_Info.theTime And u.createId=User_Info.createId And Dbms_Lob.Compare(u.Remark,User_Info.Remark)=0 Group By u.Id )Order By id;