SQL脚本循环修改数据库字段类型
数据库在设计的时候也许考虑不全面,导致某些字段类型不太准确。比如设计的时候是varchar(1024),但是实际使用的时候却发现太小了,装不下,于是需要修改字段类型为ntext什么的。
我最近就遇到了一个需求,需要修改20个字段的类型,把相同的脚本写20遍吗?NO,NO,NO!
========================================================================
我有这么一张表“Attribute”,里面有60个字段,分别是Attribute01、Attribute02、Attribute03、…… Attribute60。现在我需要把Attribute41到Attribute60的字段类型修改为ntext。
SQL Server:
DECLARE @i int SET @i=41 DECLARE @fieldName varchar(32) DECLARE @sqlStatement varchar(MAX) WHILE @i<=60 BEGIN SET @fieldName = 'Attribute' + cast(@i as varchar) SET @sqlStatement ='ALTER TABLE [Attribute] ALTER COLUMN ['+@fieldName+'] [ntext] NULL' EXEC (@sqlStatement) SET @i=@i+1 END
Oracle:
DECLARE i NUMBER; fieldName VARCHAR2(32); fieldNameBK VARCHAR2(32); sqlStatement VARCHAR2(1024); BEGIN i:=41; LOOP fieldName:='Attribute' || TO_CHAR(i); fieldNameBK:='Attribute' || TO_CHAR(i) || '_bak'; --处理CLIPEX表 sqlStatement:='Alter table Attribute ADD (' || fieldNameBK || ' NCLOB null)'; EXECUTE IMMEDIATE sqlStatement; sqlStatement:='Update Attribute set ' || fieldNameBK || ' = ' || fieldName; EXECUTE IMMEDIATE sqlStatement; sqlStatement:='alter table Attribute drop COLUMN ' || fieldName; EXECUTE IMMEDIATE sqlStatement; sqlStatement:='alter table Attribute rename COLUMN ' || fieldNameBK || ' to ' || fieldName; EXECUTE IMMEDIATE sqlStatement; i:=i+1; EXIT WHEN i > 60; END LOOP; COMMIT; END;
就这样,一个循环搞定。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?