达梦 DM 执行SQL报字符串截断如何分析定位/超长文本截取

时间:2024-03-28 10:11:56

达梦 执行SQL报字符串截断如何分析定位/超长文本截取

1 执行INSERT时报错
一般此类问题是由于目标表存在一个(或多个)字段长度不够,导致插入失败。重点关注CHAR、VARCHAR字段的长度,可以创建一个具备足够长度的测试表,将报错数据插入测试表中,通过select max(length(“目标字段”)) from “测试表”,获得插入数据实际的长度信息,从而修改目标表数据或者处理包含超长字段的记录。
另外,注意中文字符的长度问题:数据库初始化参数LENGTH_IN_CHAR=0时,unicode编码下一个中文占据3个字节(char(3)),GBK编码下一个中文占据2个字节(char(2));当数据库初始化参数LENGTH_IN_CHAR=1时,char(1)即可存储一个字符。
达梦 DM 执行SQL报字符串截断如何分析定位/超长文本截取

2 执行查询时报此错误

此类问题常见于分组查询中使用了wm_concat()之类函数拼接字符串,由于分组数据记录过多导致拼接函数返回值超长,解决办法一般是改写sql查询条件降低分组记录数或者对sql语句进行修改(如改为超长切分)。