我需要完全按照this问题从DB2中提取逗号分隔值,因此在快速搜索之后,我通过在select子句中使用以下函数找到了解决方案:
SUBSTR(XMLCAST(XMLGROUP(', ' || col_1 AS C ORDER BY col_1) AS clob), 3) AS RES_COL
现在,返回的输出是CLOB而不是VARCHAR。我尝试通过增加VARCHAR限制,但它给出了CAST错误。现在,我在JAVA中读取此CLOB列时遇到异常。
SQL state [HY000]; error code [0]; [BEA][DB2 JDBC Driver]SQLDIAGGRP was specified and not null.; nested exception is java.sql.SQLException: [BEA][DB2 JDBC Driver]SQLDIAGGRP was specified and not null.
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:407)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:458)
我无法找到任何有关此异常意味着什么的帮助?我的理解是它与JDBC驱动程序有关,但有人可以解释一下吗?
否则,DB2专家能否告诉我如何返回VARCHAR而不是CLOB,以便JAVA在查询时不会抱怨?
答案 0 :(得分:0)
我能够通过在XMLCAST输出上使用CAST和TRIM DB2函数来解决此问题。现在我能够从查询中返回VARCHAR,JAVA代码也能正常工作。
SUBSTR(TRIM(CAST(XMLCAST(XMLGROUP(', ' || col_1 AS C ORDER BY col_1) AS clob) AS VARCHAR(4096))), 3) AS RES_COL