在DM8上对大字段类型列进行排序、分组等操作时,会报错:-2685:试图在blob或者clob列上排序或比较。本期为大家分享该报错下的问题解决方案。
1、创建测试表并插入数据:
create table test (id int,content text);insert into test values(1,'武汉达梦数据库股份有限公司成立于2000 年,为中国电子信息产业集团(CEC)旗下基础软件企 业,专业从事数据库管理系统与数据分析软件的研发、销售和服务。');insert into test values(2,'达梦公司的发展跨越了七个“五年计划”,先后完成了近60项国家级、省部级的科研开发项目,取得了50多项研究成果,皆为国际先进、国内领先水平,有30多项获国家、省部级科技进步奖。');commit;
2、对大字段类型列进行排序和分组操作
SQL> select count(*) from test group by content;SQL> select id,content from test order by content;

1、使用CAST将字段类型转换为字符串类型
SQL> select count(*) from test group by cast(content as varchar);

SQL> select id,cast(content as varchar) from test order by cast(content as varchar);

2、使用DBMS_LOB.SUBSTR函数
DBMS_LOB.SUBSTR函数对CLOB或者TEXT类型,返回的结果为字符串类型,具体细节请参考《DM8系统包使用》。
SQL> select id,dbms_lob.substr(content) from test order by dbms_lob.substr(content);

SQL> select count(*) from test group by dbms_lob.substr(content);

3、修改参数
ENABLE_BLOB_CMP_FLAG: 是否支持大字段类型的比较。0:不支持;1:支持。设置为1后支持DISTINCT、ORDER BY、分析函数和集函数支持对大字段进行处理。
查看参数:
SQL>select para_name,para_value,para_type from v$dm_ini where para_name='ENABLE_BLOB_CMP_FLAG';

修改参数:
SQL>sp_set_para_value(1,'ENABLE_BLOB_CMP_FLAG',1);SQL>select id,content from test order by content;

SQL>select count(*) from test group by content;


内容:林夕
排版:哈哈
文章转载自达梦E学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




