如何在Informix中创建CAST以将LVARCHAR转换为TEXT?

时间:2011-06-07 18:37:29

标签: casting types informix

我可以使用哪种内置例程将LVARCHAR类型的数据转换为TEXT类型的数据?

更大的上下文:我有一个表,其列已定义为LVARCHAR(4096)。现在,开发人员希望将此列的数据类型更改为TEXT。理想情况下,这将完成:

ALTER TABLE foo MODIFY bar TEXT;

...但在这种情况下,屏幕上会出现以下错误:

ALTER TABLE can not modify column (bar) type. Need a cast from the current type to the new type.

我已经阅读了CREATE CAST构造,但我无法开始思考正确的转换函数究竟是什么样的。如果没有函数,Informix将不允许CREATE CAST工作。也就是说,如果我这样做,只需:

CREATE CAST (LVARCHAR AS TEXT)

... Informix告诉我需要一个强制转换功能(这很有意义)。

2 个答案:

答案 0 :(得分:3)

请注意,Informix开发人员:如果你无意中遇到了这样的问题,就无法单独使用SQL或DDL 来摆脱它。让我再说一遍。

如果您需要将VARCHARLVARCHAR列迁移为TEXT列,并且无法承担丢失该列中数据的费用,在SQL或DDL中无法做到这一点

相反,您必须在数据库驱动程序内部编写一个为您进行转换的程序。就我而言,我使用JDBC mutable result sets并将列复制到新列,让JDBC驱动程序执行转换,然后删除旧列,并将新列重命名回旧列。此常规模式是将现有字符数据迁移到TEXT列的唯一方法。

答案 1 :(得分:1)

@Storm:您使用的是哪个版本的IDS / ODBC? AFAIK,IDS 9或10无法在服务器中使用特定的嵌入式C(请参阅boulder site),但您无法通过SQL直接执行此操作。 Blob相关的功能左右。

其他方法是使用UNLOAD / LOAD。

在我的场景中,我们遇到了很多问题:没有企业服务器的管理员权限,因为我们是服务提供商,我们只能使用数据库,但不能修改结构。我们不能仅通过启动查询来修改TEXT字段。