什么是运行时生成的表的数据类型

时间:2015-04-27 09:04:28

标签: sql db2

以下是我的查询的样子

SELECT * FROM (SELECT * FROM table1 t1 WHERE col3='abc')
INNER JOIN table2 t2 ON t1.col1=t2.col1
INNER JOIN table3 t3 ON t2.col1=t3.col1

table1,table2,table3中所有列的数据类型为varchar。

我假设在执行查询时,首先将table1存储在内存中,然后在条件下完成连接操作。

当table1存储在内存中时,列的数据类型是否仍然与表定义中的相同?因为如果数据类型改变了连接条件的bcoz,它可能会引发一些错误。

我的这个查询实际上是一个视图,并且我得到了以下错误。 1.在运行RUNSTATS时:

  

该实用程序无法生成统计信息。错误" -420"是   返回.. SQLCODE = -2310,SQLSTATE =,DRIVER = 3.61.75

  1. 在不使用其视图名称的情况下运行此查询(我的意思是直接运行查询) [jcc] [t4] [1026] [11213] [3.61.75]由于内部JCC错误而引发的错误检查异常。请联系支持。
  2.   

    消息文本:服务器上发生错误。严重程度代码8.没有例外   从服务器返回的代码ERRORCODE = -4228,SQLSTATE = null

    1. 在运行查询SELECT * from view;
    2.   

      在函数的字符串参数中找到无效字符   " DECFLOAT" .. SQLCODE = -420,SQLSTATE = 22018,DRIVER = 3.61.75

      我正在使用db2 LUW 9.5

1 个答案:

答案 0 :(得分:0)

我的实际查询没有SELECT *。它包含基于CASE的表达式。 因此,在THEN部分,数据类型与ELSE部分不同。 示例:CASE WHEN'THEN'hello'ELSE 0

因此我得到了错误,我将其他部分改为'0'