本文介绍了将列从 NVARCHAR 更改为 NBINARY的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不小心创建了一个类型错误的列NVARCHAR(用于存储密码盐),我想将其转换为NVARBINARY.

I accidentally created a column with the wrong type NVARCHAR (for storing password salts) and I want to convert it to NVARBINARY.

我试过了

ALTER TABLE [dbo].[TableName]
    ALTER COLUMN [ColumnName] [varbinary] (20) NOT NULL
GO

但它说

不允许从数据类型 nvarchar 隐式转换为 varbinary.使用 CONVERT 函数运行此查询.

有没有办法做到这一点?CONVERT 似乎仅用于表达式,而不用于更改.

Is there a way to do that? CONVERT seems to be for expressions only, not for alterations.

推荐答案

改变的唯一方法是:

Create Table a (id int,blb Nvarchar(10))


insert into a Values
(1,'Test'),
(2,N'Test2');

BEGIN Transaction
ALTER TABLE a
ADD blb_New [varbinary] (20) NULL
GO

UPDATE a
SET blb_new = CAST(blb AS varbinary(20))
GO

ALTER TABLE a
DROP COLUMN blb
GO

EXEC sp_rename 'a.blb_new', 'blb', 'COLUMN'
GO
COMMIT Transaction


Select *,CAST(blb as Nvarchar(20)) from a

Drop Table a

这篇关于将列从 NVARCHAR 更改为 NBINARY的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 22:01