注册

查询sql报错:dm.jdbc.driver.DMException: 模式过多,内附建表语句和插入数据测试

DM_063835 2022/10/21 1746 13 已解决

【DM版本】:8.1.2.141
【操作系统】:linux

有如下sql:
SELECT
COUNT(1) AS total
FROM
T_CCM_CUST a
INNER JOIN (
SELECT
t.CUST_ID
FROM
T_CCM_CUST_TAG t
WHERE
t.TAG_SEAT_VALUE LIKE ‘1___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________’) b ON b.CUST_ID = a.CUST_ID

报错提示“模式过多",百度了下达梦都没相关问题的描述,这里的‘_’是通配符,这里修改like的长度短一点才查询才成功,但是单独执行子查询里面的like语句又不会报错,去mysql数据库执行了上述语句也没问题, 望大佬们能解答下

—以下为建表语句和两条数据,两表为一对多关系–
**
CREATE TABLE T_CCM_CUST (
CUST_ID VARCHAR(32) NOT NULL,
CUST_NAME VARCHAR(400) NOT NULL
CONSTRAINT PK_T_CCM_CUST PRIMARY KEY (CUST_ID)
);

CREATE TABLE T_CCM_CUST_TAG (
CUST_ID VARCHAR(32) NOT NULL,
TAG_SEAT_VALUE VARCHAR(512) NOT NULL,
CONSTRAINT PK_T_CCM_CUST_TAG PRIMARY KEY (CUST_ID)
);

INSERT INTO T_CCM_CUST_TAG
(CUST_ID, TAG_SEAT_VALUE)
VALUES(‘20000110001’, ‘10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000’);

INSERT INTO T_CCM_CUST
(CUST_ID, CUST_NAME)
VALUES(‘20000110001’, ‘111’);
**

–以下为20221027编辑
测试后发现like语句中的通配符超过298个后此时添加任何文字就会开始报错,297个通配符加任意字符不会,目前临时方案只有是拆分原来字段为多个字段,以256为单位长度做拆分

回答 0
暂无回答
扫一扫
联系客服