本文于 16 天前发布,最后更新于 10 天前
一、问题描述
在达梦数据库中对大字段类型的列进行排序或比较时会报错[-2685]:试图在blob或者clob列上排序或比较
测试数据演示示例:
建表
CREATE TABLE T_BCLOB (ID INT PRIMARY KEY, BL BLOB, CL CLOB);
使用SQLark的数据生成功能,生成测试数据。
使用ORDER BY在大字段列进行排序
SELECT * FROM T_BCLOB ORDER BY BL,CL;
报错[-2685]:试图在blob或者clob列上排序或比较
二、问题解决
首先,对大字段进行排序本身是一个高资源消耗工作,且实际意义不大,不推荐这样编写SQL。不过,如果大字段长度不是很长,且实有这种需求,可以考虑开启功能性参数ENABLE_BLOB_CMP_FLAG
【动态,会话级参数】来解决。
开启方法
SP_SET_PARA_VALUE(1, 'ENABLE_BLOB_CMP_FLAG', 1);
--或者
ALTER SYSTEM SET 'ENABLE_BLOB_CMP_FLAG' = 1 BOTH;
查询验证
--查询参数是否修改成功
SELECT PARA_NAME, PARA_VALUE, FILE_VALUE FROM V$DM_INI WHERE PARA_NAME = 'ENABLE_BLOB_CMP_FLAG';
--测试ORDER BY排序功能
SELECT * FROM T_BCLOB ORDER BY BL,CL;
执行成功
排序成功,问题解决。