我不小心创建了一个类型为NVARCHAR
的列(用于存储密码盐),我想将其转换为NVARBINARY
。
我试过
ALTER TABLE [dbo].[TableName]
ALTER COLUMN [ColumnName] [varbinary] (20) NOT NULL
GO
但它说
不允许从数据类型nvarchar到varbinary的隐式转换。使用CONVERT函数运行此查询。
有办法吗? CONVERT
似乎仅用于表达,而不是用于更改。
答案 0 :(得分:3)
改变的唯一方法是:
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
答案 1 :(得分:0)
您可以先在同一列中将所有值从NVARCHAR转换为NVARBINARY。 转换所有值后,使用Alter表
您可以参考以下链接: Converting NVARCHAR(255) to DATE