达梦数据库“-2685:试图在blob或者clob列上排序或比较“
描述
在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列上排序或比较“相关推荐
- DM8达梦数据库:系统中的错误码信息
此达梦数据库版本为:dm8-1-88-20.06.24-123627-ENT SELECT * FROM SYS."V$ERR_INFO"; 错误码: 100 空结果集 101 字 ...
- 达梦数据库-8 错误代码查询
达梦数据库中有一个视图,可以查看目前达梦数据库中所有的报错信息 select * from v$err_info; 可以看到达梦报错代码是从100开始的,截止到目前一共有2799个. CODE ERR ...
- DM error code 达梦数据库-错误代码 汇总
CODE ERRINFO 100 空结果集 101 字符串截断 102 在集函数中计算NULL值 103 无效的表名 104 删除0行记录 105 插入0行记录 106 更新0行记录 107 跨语句游 ...
- 达梦数据库删除用户_DM 达梦数据库 删除表空间 [-3412]:试图删除已经使用的表空间. 错误 处理方法...
达梦数据库drop 表空间时报如下错误: [dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA@127.0.0.1:6236 服务器[127.0.0.1:6236]:处 ...
- dm7和mysql_【干货分享】达梦数据库DM7的新特性发布啦
原标题:[干货分享]达梦数据库DM7的新特性发布啦 近日,DM7正式发布新特性.作为一款广受业内人士认可的国产数据库产品,最突出的特征就是它良好的兼容性,完善的功能以及超出客户期望的优秀性能表现:本次 ...
- 达梦数据库忘记SYSDBA密码的问题探讨
在实际过程中经常有人会问起万一忘记了SYSDBA密码怎么办.也有人在网络上吐槽,达梦数据库忘了SYSDBA密码就只能重装. 其实这个问题说起来有几个应用场景. 我们数据库里的数据不重要,我只是用来学习 ...
- 达梦数据库-部署及日常工具使用
DM 数据库安装方式 1.图形化安装 2.命令行安装 3.自动化安装 单机部署 一.操作系统配置检查 1.内核版本大于2.6 [root@itsdata ~]# uname -r 3.10.0-116 ...
- dm服务器未能启动,DM 达梦数据库 创建服务 无法创建目录_REPLACE_SELF_DM_HOME 错误解决方法...
在升级DM 8.1.1.19升级到8.1.1.48 的操作中,创建的服务无法正常启动. 但手工执行dmserver 命令是可以启动达梦实例. https://www.cndba.cn/dave/art ...
- 达梦数据库常用函数——字符串函数
达梦数据库常用函数--字符串函数 字符串函数 函数 ASCII 函数 BIT_LENGTH 函数 CHAR 函数 CHAR_LENGTH / CHARACTER_LENGTH 函数 INITCAP 函 ...
最新文章
- 浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)
- C# 检查当前系统已安装的程序app/两种方法检测
- Windows编程中的映射模式和坐标转换
- compress()方法
- [转载] python中全局变量和局部变量解析
- bzoj1588 营业额统计
- 接口测试及服务器性能压测,接口测试及服务器性能压测
- spyder python下载_spyder下载
- HTML 页面中点击 a标签实现添加QQ好友功能
- 洛谷 P1919 【模板】A*B Problem升级版 【快速傅里叶变换 FFT】
- Task 4 用户输入->知识库的查询语句
- 【上课课件整理复习】第六章 网页数据的采集(1)
- lab值意义_色差仪lab值如何分析
- 网站后台万能密码/10大常用弱口令
- SSO单点登录-基于cookie的单点登录
- 【人机对话】对话机器人技术简介:问答系统、对话系统与聊天机器人
- c语言反三角函数值域,反三角函数的定义域和值域
- SLAM之camera(Intel RealSense D435)调试第一弹:Win10平台下getting started
- SpringBoot配置文件yml读取注意问题
- 谷歌安卓以AAB替换APK安装包
热门文章
- kubernetes中给服务部署探针
- 如何写一个好的拥塞控制算法
- 3D加速度传感器计算角度
- 深度学习基础论文学习
- 文件上传——FileItem接口方法
- 华为鸿蒙系统公测机型,鸿蒙OS尝鲜入口提前开放首批可更新机型可在“我的华为”看到惊喜...
- Semver语义化版本号和npm包之semver的相关使用
- 对孩子也应言而有信诚实无诈,身教重于言教
- learning from the Trenches 12-16 用看板管理大型项目
- [cocos2dx]抽象元素——CCDirector导演类