以下是我的查询的样子
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
消息文本:服务器上发生错误。严重程度代码8.没有例外 从服务器返回的代码ERRORCODE = -4228,SQLSTATE = null
SELECT * from view
; 在函数的字符串参数中找到无效字符 " DECFLOAT" .. SQLCODE = -420,SQLSTATE = 22018,DRIVER = 3.61.75
我正在使用db2 LUW 9.5
答案 0 :(得分:0)
我的实际查询没有SELECT *。它包含基于CASE的表达式。 因此,在THEN部分,数据类型与ELSE部分不同。 示例:CASE WHEN'THEN'hello'ELSE 0
因此我得到了错误,我将其他部分改为'0'