为什么当我在vertica中的视图上执行select查询时,我会得到“类型varchar的长度不能超过65000”?

时间:2015-03-20 22:24:22

标签: sql view vertica flextable

我在vertica中有一个flextable,我正在尝试基于它创建一个视图。

这是创建视图语句:

CREATE VIEW testview AS
    SELECT
            COALESCE (
                "USER_ID",
                "userId",
                "SM.actor.id",
                "SM.participant.userId",
                "SM.userId",
                "SM.uid",
                "SM_C.userId",
                "SM.id" )::varchar AS userid
    FROM
        flex_table_test
    WHERE "SM.verb" is not null

我可以成功创建视图,但是当我执行类似:

的操作时
SELECT * FROM testview LIMIT 10;

我明白了:

  

错误3852:类型varchar的长度不能超过65000

如果我自己只执行视图的选择部分,它可以正常工作。我尝试了输出输出字段,但它似乎没有什么区别。

1 个答案:

答案 0 :(得分:3)

默认情况下,Flex表中的数据存储为LONG VARBINARY,其默认原始大小为130000.由于此数据长于VARCHAR(65000)的最大长度,因此您需要截断COALESCE的结果或尝试将其转换为::long varchar。如果后者有效,请注意Vertica不支持对此内容类型的操作。