DB2 sql语法报错SQLSTATE=42803
DB2 sql语法报错SQLSTATE=42803
刚接触DB2,不太熟悉,修改一句时有点问题,望大神指教...
在xml配置文件里面,有大概这么一句语法,运行起来会报错SQLSTATE=42803
SQL code?1 SELECT CASE WHEN B.COLUMN_A IS NOT NULL THEN B.COLUMN_B WHEN K.COLUMN IS NULL THEN 0 WHEN J.COLUMN IS NULL THEN -1 <!--此处加上就会报错 --> ELSE -2 END COLUMN_B FROM TABLE_A A LEFT JOIN TABLE_B B ON <!--此处省略关联 --> LEFT JOIN TABLE_K K ON <!--此处省略关联 --> LEFT JOIN TABLE_J J ON <!--此处省略关联 --> WHERE <!--此处省略条件 -->
奇怪的是,直接将语句扔到Toad for DB2中执行没有任何问题 ,但是在xml中调用会出错,但删除WHEN J.COLUMN IS NULL THEN 0 这句这运行正常,好像xml中的case when then中不能有三个不同表的意思
另外,使用的是struts1 +ibatis ,有点古老。毕业论文
加上 case中加上when A.COLUMN IS NULL THEN -2却又能跑起来
谢谢。
这个错比较简单
Java code?1 Caused by: com.ibm.db2.jcc.b.nm: DB2 SQL Error: SQLCODE=-119, SQLSTATE=42803, DRIVER=3.50.152
其中还有个SQLERRMC="这个值就是J表的那个字段名,不管改成哪个都报错,包括join on后的关联字段"
好像我这里不能用COALESCE ,因为还有几个when then 要做数据的加减,比较大小等,,不单单是作null判定,这里简化写出来只是我不断删掉when then后发现的最少出错语句。
从没想到group by的问题,加上那个xml有96k,我搞懂它的意思都花了不少时间,所以不敢贴出来,就简化写了,没想到简化地有点过了,呵呵