描述

在DM8上对大字段类型列进行排序、分组等操作时,会报错-2685:试图在blob或者clob列上排序或比较

示例演示

创建测试表并插入数据

对大字段类型列进行排序和分组操作

SQL语句如下:

select c1,count(*) from T group by c1;
SELECT ID,C1 FROM T ORDER BY C1;

可以观察到,对C1列进行排序和排序操作均报错"[-2685]:试图在blob或者clob列上排序或比较."

处理办法

1、修改数据库参数ENABLE_BLOB_CMP_FLAG

参数说明

将数据库参数ENABLE_BLOB_CMP_FLAG设置为1后,数据库支持DISTINCT、ORDER BY、分析函数和集函数支持对大字段进行处理。

**ENABLE_BLOB_CMP_FLAG:**是否支持大字段类型的比较。0:不支持;1:支持。设置为1后支持DISTINCT、ORDER BY、分析函数和集函数支持对大字段进行处理。

注意:该参数并不能支持GROUP BY 对大字段进行处理。

测试

1、将ENABLE_BLOB_CMP_FLAG参数设置为1

sp_set_para_value(1,'ENABLE_BLOB_CMP_FLAG',1);

2、新开会话,执行order by SQL语句

3、执行group by SQL语句

group by 语句还是会报错,报错信息为"[-6116]:无法比较的数据类型."

所以设置ENABLE_BLOB_CMP_FLAG为1,并不能解决GROUP BY语句报错的问题。

2、将大字段类型转换为字符串类型

通过上面测试,GROUP BY 无法通过修改ENABLE_BLOB_CMP_FLAG参数来支持,所以需要将对应的大对象列转换为字符串类型进行处理。

使用CAST将字段类型转换为字符串类型

SQL语句如下:

SELECT ID,CAST(C1 AS VARCHAR) FROM T ORDER BY CAST(C1 AS VARCHAR);
SELECT CAST(C1 AS VARCHAR), COUNT(*) FROM T GROUP BY CAST(C1 AS VARCHAR);

可以观察到,通过CAST将大字段列转换为字符串类型之后,ORDER BY 、GROUP BY 操作均可以执行。

使用DBMS_LOB.SUBSTR函数

DBMS_LOB.SUBSTR函数对CLOB或者TEXT类型,返回的结果为字符串类型,具体细节请参考《DM8 系统包使用》。

SQL语句如下:

SELECT ID,DBMS_LOB.SUBSTR(C1) FROM T ORDER BY DBMS_LOB.SUBSTR(C1);
select DBMS_LOB.SUBSTR(C1),count(*) from T group by DBMS_LOB.SUBSTR(C1);

可以观察到,使用DBMS_LOB.SUBSTR函数后,对于ORDER BY 、GROUP BY 操作均可以执行。

限制条件

1、使用第一种方法,修改数据库参数的方式,无法支持GROUP BY 对大字段的处理。

2、使用第二种方法,通过转换大字段类型为字符串类型可以达到相应的效果,但是如果大字段的内容长度比较长超过32767,内容可能会自动截断。

更多资讯请上达梦技术社区了解:https://eco.dameng.com

达梦数据库“-2685:试图在blob或者clob列上排序或比较“相关推荐

  1. DM8达梦数据库:系统中的错误码信息

    此达梦数据库版本为:dm8-1-88-20.06.24-123627-ENT SELECT * FROM SYS."V$ERR_INFO"; 错误码: 100 空结果集 101 字 ...

  2. 达梦数据库-8 错误代码查询

    达梦数据库中有一个视图,可以查看目前达梦数据库中所有的报错信息 select * from v$err_info; 可以看到达梦报错代码是从100开始的,截止到目前一共有2799个. CODE ERR ...

  3. DM error code 达梦数据库-错误代码 汇总

    CODE ERRINFO 100 空结果集 101 字符串截断 102 在集函数中计算NULL值 103 无效的表名 104 删除0行记录 105 插入0行记录 106 更新0行记录 107 跨语句游 ...

  4. 达梦数据库删除用户_DM 达梦数据库 删除表空间 [-3412]:试图删除已经使用的表空间. 错误 处理方法...

    达梦数据库drop 表空间时报如下错误: [dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA@127.0.0.1:6236 服务器[127.0.0.1:6236]:处 ...

  5. dm7和mysql_【干货分享】达梦数据库DM7的新特性发布啦

    原标题:[干货分享]达梦数据库DM7的新特性发布啦 近日,DM7正式发布新特性.作为一款广受业内人士认可的国产数据库产品,最突出的特征就是它良好的兼容性,完善的功能以及超出客户期望的优秀性能表现:本次 ...

  6. 达梦数据库忘记SYSDBA密码的问题探讨

    在实际过程中经常有人会问起万一忘记了SYSDBA密码怎么办.也有人在网络上吐槽,达梦数据库忘了SYSDBA密码就只能重装. 其实这个问题说起来有几个应用场景. 我们数据库里的数据不重要,我只是用来学习 ...

  7. 达梦数据库-部署及日常工具使用

    DM 数据库安装方式 1.图形化安装 2.命令行安装 3.自动化安装 单机部署 一.操作系统配置检查 1.内核版本大于2.6 [root@itsdata ~]# uname -r 3.10.0-116 ...

  8. dm服务器未能启动,DM 达梦数据库 创建服务 无法创建目录_REPLACE_SELF_DM_HOME 错误解决方法...

    在升级DM 8.1.1.19升级到8.1.1.48 的操作中,创建的服务无法正常启动. 但手工执行dmserver 命令是可以启动达梦实例. https://www.cndba.cn/dave/art ...

  9. 达梦数据库常用函数——字符串函数

    达梦数据库常用函数--字符串函数 字符串函数 函数 ASCII 函数 BIT_LENGTH 函数 CHAR 函数 CHAR_LENGTH / CHARACTER_LENGTH 函数 INITCAP 函 ...

最新文章

  1. 浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)
  2. C# 检查当前系统已安装的程序app/两种方法检测
  3. Windows编程中的映射模式和坐标转换
  4. compress()方法
  5. [转载] python中全局变量和局部变量解析
  6. bzoj1588 营业额统计
  7. 接口测试及服务器性能压测,接口测试及服务器性能压测
  8. spyder python下载_spyder下载
  9. HTML 页面中点击 a标签实现添加QQ好友功能
  10. 洛谷 P1919 【模板】A*B Problem升级版 【快速傅里叶变换 FFT】
  11. Task 4 用户输入->知识库的查询语句
  12. 【上课课件整理复习】第六章 网页数据的采集(1)
  13. lab值意义_色差仪lab值如何分析
  14. 网站后台万能密码/10大常用弱口令
  15. SSO单点登录-基于cookie的单点登录
  16. 【人机对话】对话机器人技术简介:问答系统、对话系统与聊天机器人
  17. c语言反三角函数值域,反三角函数的定义域和值域
  18. SLAM之camera(Intel RealSense D435)调试第一弹:Win10平台下getting started
  19. SpringBoot配置文件yml读取注意问题
  20. 谷歌安卓以AAB替换APK安装包

热门文章

  1. kubernetes中给服务部署探针
  2. 如何写一个好的拥塞控制算法
  3. 3D加速度传感器计算角度
  4. 深度学习基础论文学习
  5. 文件上传——FileItem接口方法
  6. 华为鸿蒙系统公测机型,鸿蒙OS尝鲜入口提前开放首批可更新机型可在“我的华为”看到惊喜...
  7. Semver语义化版本号和npm包之semver的相关使用
  8. 对孩子也应言而有信诚实无诈,身教重于言教
  9. learning from the Trenches 12-16 用看板管理大型项目
  10. [cocos2dx]抽象元素——CCDirector导演类