如何排查IBM/DB2 SQL0104 Token无效问题?
IBM DB2 SQL0104错误排查与解决
本人主要从事Microsoft SQL开发,在运行以下IBM/DB2 SQL语句时触发了SQL0104错误:
SELECT Test_Data.PRDINVSEQ.DASTAT, DACUST, DASRNO, DADTOR, DAORNO, Test_Data.bthdrextpf.SHXDEP, DADNAM, DADTST, CASE WHEN DACONF = '' THEN 'N' ELSE DACONF END AS DACONF1, DAENGD, DAEXTC, DAPRGY, Test_Data.BTHDR.SHSPL1, DASPRD, DADTCD, DALDNO, DADTLD, DADTMD, DAMDLN, Test_Data.PRDINVSEQ.STATSQ FROM Test_Data.BTHDR JOIN Test_Data.DLRINVAPF ON SHORNO = DAORNO JOIN Test_Data.PRDINVSEQ ON Test_Data.DLRINVAPF.DASTAT = Test_Data.PRDINVSEQ.DASTAT JOIN Test_Data.BTHDREXTPF ON SHORNO = SHXORNO WHERE TRIM(DACUST)<>'' AND Test_Data.DLRINVAPF.DASTAT IN ('WP', 'OD', 'SC', 'BO') ORDER BY DADNAM, Test_Data.PRDINVSEQ.STATSQ ASC, DADTST ASC, DAMDLN ASC
错误提示如下:
[SQL0104] Token was not valid. Valid tokens: ( + * -? : DAY INF LAG NAN RID ROW RRN CASE CAST CHAR DATE DAYS.
注意到错误信息里“Token”和“was”之间有三个空格,说明DB2解析时识别到了一个无法显示的无效字符。经过对比排查,确认问题出在SQL语句末尾存在非打印字符,将这些字符删除后,语句可以正常执行。
内容的提问来源于stack exchange,提问作者user153923
相关产品推荐
相关产品推荐

