达梦数据库 查询报“字符串截断”

达梦数据库 查询时,报“字符串截断”问题

在使用达梦数据查询语句时,特别是字段类型为TEXT类型,当对此字段进行字符串操作,且该字段内容长度过长时会出现“字符串截断”错误。

例如下方学生简介表中有text字段introduce

create table student(
	id BIGINT primary key  comment主键,
	name varchar(50) comment 姓名,
	introduce text comment学生简介	
	
) comment学生简介表;

我们要截取学生简介字段的前500个字符时,当表中introduce 有超长字段时,会报“字符串截断”错误。

select *,SUBSTRB(introduce,0,500)
 from student

报错“字符串截断”错误 经过研究、询问。发现好像字符串函数,虽然可以处理text类型,但是估计底原理是,先将text类型转字符串类型。再进行处理。所以会出现超长错误。

SUBSTR() SUBSTRB() BIT_LENGTH() CHAR_LENGTH() CHARACTER_LENGTH() TO_CHAR() REGEXP_REPLACE() 大多数字符串函数都是不能超过13105

REPLACE()函数不受影响

有些函数处理的字符串长度好像是32767,故处理时先使用length()函数相应的筛选一下

改写语句后

select *,
regexp_replace(introduce,我,你),
length(introduce)
 from student
 where length(introduce)<13105

在程序设计中,假如存在对字符串替换,筛选时,最好也控制用户输入长度不超过13105

经验分享 程序员 微信小程序 职场和发展