我可以使用哪种内置例程将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告诉我需要一个强制转换功能(这很有意义)。
答案 0 :(得分:3)
请注意,Informix开发人员:如果你无意中遇到了这样的问题,就无法单独使用SQL或DDL 来摆脱它。让我再说一遍。
如果您需要将VARCHAR
或LVARCHAR
列迁移为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字段。