2011-06-07 808 views
1

我可以利用什么内置例程将LVARCHAR类型的数据转换为类型为TEXT的数据?如何在Informix中创建CAST以将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

请注意,Informix开发人员:如果您不小心遇到了这样的问题,没有办法使用SQL或DDL独自脱身。让我重复一遍。

如果你有一个VARCHARLVARCHAR列,您需要迁移是一个TEXT列,如果你不能在该列中丢失数据,没有办法在SQL或DDL做到这一点。

相反,您必须编写一个程序,在内存中的数据库驱动程序中为您执行转换。在我的情况下,我使用JDBC mutable result sets并将该列复制到一个新列中,让JDBC驱动程序执行转换,然后删除旧列,并将新列重新命名为旧列。这种一般模式是将现有字符数据迁移到TEXT列的唯一方式。

+0

我真的不会错过Informix。感谢您的提醒! :) – 2011-06-10 15:29:19

1

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

其他方式是使用UNLOAD/LOAD。

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

相关问题