我正在尝试改变几年前用红移编写的视图。该视图有一列文本类型,其他视图依赖于它,所以我不能删除它。一旦我尝试“创建或替换视图”,我就会收到此错误
“无效操作:无法更改视图列的数据类型 “员工状态”;
该列最初的类型为 ::TEXT
case when 1=1 then 'someText'::TEXT else 'otherText'::TEXT end as employee_status
但是一旦我尝试更新此视图,该列就会创建为 varchar(10) ,这会产生此冲突。 有没有办法强制将列类型创建为文本。 正在阅读文档,不确定最近的更新是否改变了
编辑: 这是视图定义的示例:
create or replace view sc.test
as select column1...,
case when 1=1 then 'someText'::TEXT else 'otherText'::TEXT end as employee_status
where... some condition
我想更改一些条件,但随后出现了employee_status列的数据类型问题,因为它是作为varchar而不是文本创建的,所以我无法更新视图。
我遇到了同样的问题,并能够使用以下方法解决它:
text(cast(columnname as VARCHAR(65535)))
您需要将
columnname
替换为您的字段名称,并将 VARCHAR(65535)
替换为旧的基表数据类型和精度。