达梦数据库 varchar类型转text报错“数据类型的变更无效”

目录

一、问题

二、解决方法


一、问题

今天我在达梦数据库中,想在一个表里,将varchar类型字段改为text类型,结果发生了报错,如下:

那么为什么会发生数据类型变更无效,这是因为达梦数据库的内部机制不支持直接变更表结构的字段类型信息。

二、解决方法

可以通过临时字段的方式来解决。

第一步:创建临时字段

ALTER TABLE "WORKER"."WORKFLOW_TRANSITION" ADD config_value_tmp text;

第二步:然后将你要变类型的字段的内容赋值给临时字段 config_value_tmp

UPDATE "WORKER"."WORKFLOW_TRANSITION" SET config_value_tmp=trim(CONDITION_EXPRESSION);

第三步:复制字段内容成功后执行查询命令来看一下字段内容是否已经复制过去了

select * from "WORKER"."WORKFLOW_TRANSITION";

第四步:删除原始字段WORKFLOW_TRANSITION然后将新建的临时字段 config_value_tmp 重命名为 WORKFLOW_TRANSITION

ALTER TABLE "WORKER"."WORKFLOW_TRANSITION" DROP COLUMN CONDITION_EXPRESSION;

ALTER TABLE "WORKER"."WORKFLOW_TRANSITION" RENAME COLUMN config_value_tmp TO CONDITION_EXPRESSION;

执行完成之后就可以看到表结果已经是最新的表结构了!!!

达梦数据库和Oracle数据库一样,不能直接修改数据类型,但可以进行一些迂回的换。对于相同数据类型,比如字符类型,可以通过修改字符长度或从char换为varchar2等方式进行换。对于不同数据类型之间的换,可以通过函数或操作符来实现。例如,如果需要将整型换为字符串,在达梦数据库中可以使用TO_CHAR函数来实现。如果需要日期类型换,可以使用TO_DATE函数来实现。如果需要更多的格式换,可以参考相关文档或查阅官方网站提供的函数和操作符。 [1 [2 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [达梦数据库如何将varchar2换成clob(如何数据类型)](https://blog.youkuaiyun.com/fengxiaozhenjay/article/details/108518169)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [达梦数据库--强制换字符串类型](https://blog.youkuaiyun.com/Ly_LittleStar/article/details/119906712)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Calvad0s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值