结果超出最大长度错误

时间:2017-05-26 16:01:10

标签: sql replace teradata

以下OREPLACE查询引发错误。

Select cast( OREPLACE (SimpledefinitionQuery , 'gpi','gpiREPLC')  as varchar(40000)) as repl
from SimpleDef0;

OREPLACE函数中的返回字符串设置为64000.当我检查列SimpledefinitionQuery的长度时,它不会超过16000.所以我无法找到我收到错误的原因。

当我用'gpiRPLC'替换'gpi'时,查询效果很好。这里出了什么问题?

由于

1 个答案:

答案 0 :(得分:0)

根据此Teradata support page,当使用OREPLACE时,返回的字符串还取决于第二个和第三个参数

OREPLACE (SimpledefinitionQuery , 'gpi','gpiREPLC')

即使第二个或第三个参数为文字(UNICODE),OREPLACE函数也会隐式将源字符串(第一个参数)转换为UNICODE。

因此,如果您在前8000个字符中截断SimpledefinitionQuery,则可能会检查该函数是否起作用(如@dnoeth注释中所建议,它将返回Unicode VARCHAR(8000))?或也将2nd和3rd参数的文字类型更改为Latin。