Teradata 响应行大小溢出(9804)错误
我正在teradata 14.0中执行以下查询Teradata 响应行大小溢出(9804)错误,teradata,Teradata,我正在teradata 14.0中执行以下查询 SELECT oreplace(CAST(RULE_ID AS VARCHAR(1000)),' ','') RULE_ID, oreplace(CAST(PHASE_ID AS VARCHAR(1000)),' ','') PHASE_ID, oreplace(CAST(TARGET_TABLE_NAME AS VARCHAR(1000)),' ','') TARGET_TABLE_NAME,
SELECT oreplace(CAST(RULE_ID AS VARCHAR(1000)),' ','') RULE_ID,
oreplace(CAST(PHASE_ID AS VARCHAR(1000)),' ','') PHASE_ID,
oreplace(CAST(TARGET_TABLE_NAME AS VARCHAR(1000)),' ','') TARGET_TABLE_NAME,
oreplace(CAST(AUDIT_TABLE_NAME AS VARCHAR(1000)),' ','') AUDIT_TABLE_NAME,
oreplace(CAST(PROC_NAME AS VARCHAR(1000)),' ','') PROC_NAME,
oreplace(CAST(ACTIVE_START_DT AS VARCHAR(1000)),' ','') ACTIVE_START_DT,
oreplace(CAST(ACTIVE_END_DT AS VARCHAR(1000)),' ','') ACTIVE_END_DT,
oreplace(CAST(ACTIVE_IND AS VARCHAR(1000)),' ','') ACTIVE_IND,
oreplace(CAST(WRITE_AUDIT_IND AS VARCHAR(1000)),' ','') WRITE_AUDIT_IND,
oreplace(CAST(SCENARIO_TYPE AS VARCHAR(1000)),' ','') SCENARIO_TYPE,
oreplace(CAST(RULE_ORDER AS VARCHAR(1000)),' ','') RULE_ORDER
FROM table
当我执行这个查询时,收到9804(响应行大小溢出)
使用的字符集:ASCII生成的
oReplace
数据类型是VarChar(8000)
必须强制转换函数的结果,而不是参数:
CAST(oreplace(PROC_NAME,' ','') AS VARCHAR(1000)) AS PROC_NAME,
但为什么要删除所有空格?如果有尾随空格,您可以简单地
修剪它们。生成的oReplace
数据类型是VarChar(8000)
您必须强制转换函数的结果,而不是参数:
CAST(oreplace(PROC_NAME,' ','') AS VARCHAR(1000)) AS PROC_NAME,
但为什么要删除所有空格?如果有尾随空格,您可以简单地TRIM
它们。proc\u name是一个整数列,因此oreplace会给出一个错误。这就是我首先将其强制转换的原因。我需要删除所有数据中的所有空格columns@anurag:整数中没有空格,除非您将其转换为字符(如果您不需要空格,这将是愚蠢的)。我在两个视图之间进行减号检查,并在运行时通过VBA创建减号查询,正如我在问题中所述。因此,这是痛点,其中,我无法在运行时识别列的数据类型,因此只能在特定列上放置或替换函数。@anurag:您的问题中没有指定减号/VBA。但是如果您必须比较两个视图,它们的输出应该是可比较的。@anurag:您可以在OREPLACE上添加另一个强制转换:CAST(OREPLACE(强制转换(阶段ID为VARCHAR(1000)),“,”,)为VARCHAR(1000))
是否确实要abc def
等于ab cd ef
?proc\u name是一个整数列,所以oreplace给出了一个错误,这就是为什么我先铸造它。我需要删除所有数据中的所有空格columns@anurag:整数中没有空格,除非您将其转换为字符(如果您不需要空格,这将是愚蠢的)。我在两个视图之间进行减号检查,并在运行时通过VBA创建减号查询,正如我在问题中所述。因此,这是痛点,其中,我无法在运行时识别列的数据类型,因此只能在特定列上放置或替换函数。@anurag:您的问题中没有指定减号/VBA。但是如果您必须比较两个视图,它们的输出应该是可比较的。@anurag:您可以在OREPLACE上添加另一个CAST:CAST(OREPLACE(CAST(阶段ID为VARCHAR(1000)),“,”,)作为VARCHAR(1000))
您确定要abc def
等于ab cd ef
?