3

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

我试过

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

但它说

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

有没有办法做到这一点?CONVERT似乎只是为了表达,而不是为了改变。

4

2 回答 2

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
于 2013-01-13T16:53:32.557 回答
0

您可以先将同一列中的所有值从 NVARCHAR 转换为 NVARBINARY。转换所有值后使用 Alter table

您可以参考以下链接: Converting NVARCHAR(255) to DATE

于 2013-01-13T17:00:05.210 回答