SQL学习---将所有的char,varchar改为nchar,nvarchar

创建存储过程p_ToUnicode,用于检查并修改SQL Server 2005数据库中char和varchar列到nchar和nvarchar。根据参数,可以查询转换可能性、只修改符合条件的列或报告不可修改的原因。存储过程首先查找所有非Unicode列,然后根据指定条件进行转换,同时展示无法转换的列及其原因。
摘要由CSDN通过智能技术生成
CREATE PROC p_ToUnicode
@type tinyint=0  --修改方式,0=仅查询可修改情况,1=仅所有列可修改时才修改,2=修改可修改列,报告不可修改列
AS
SET NOCOUNT ON
--查询非unicode列转换为unicode列的可行性
SELECT TableName=o.name,FieldName=c.name,
	FieldType=t.name+N'('+CAST(c.prec as varchar)+N')'
		+CASE WHEN c.isnullable=1 THEN N'' ELSE N' NOT' END
		+N' NULL',
	NoChangeCause=CAST(STUFF(
		CASE WHEN COLUMNPROPERTY(c.id,c.name,N'IsComputed')=1
			THEN N',计算列' ELSE N'' END
		+CASE WHEN c.cdefault=0 THEN N'' ELSE N',列具有默认值' END
		+CASE WHEN EXISTS(
				SELECT * FROM sysindexkeys idxk,sysindexes idx
				WHERE idxk.id=c.id 
					AND idxk.colid=c.colid
					AND idxk.id=idx.id
					AND idxk.indid=idx.indid
					AND idx.indid NOT IN(0,255)
					AND INDEXPROPERTY(idx.id,idx.name,N'IsAutoStatistics')=0)
			THEN N',列被主键、唯一键、索引、STATISTICS引用' ELSE N'&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值