本文于 97 天前发布,最后更新于 79 天前
一、问题描述
在达梦数据库中对大字段类型的列进行排序或比较时会报错 [-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;
执行成功
排序成功,问题解决。