Изменить колонку из NVARCHAR в NBINARY
Я случайно создал столбец с неправильным типом NVARCHAR
(для хранения солей паролей), и я хочу преобразовать его в NVARBINARY
.
Я пытался
ALTER TABLE [dbo].[TableName]
ALTER COLUMN [ColumnName] [varbinary] (20) NOT NULL
GO
Но там написано
неявное преобразование типа данных nvarchar в varbinary не допускается. Используйте функцию CONVERT для выполнения этого запроса.
Есть ли способ сделать это? CONVERT
, по-видимому, только для выражений, а не для изменений.
2 ответа:
Единственным путем изменения будет что-то вроде:
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 в NVARBINARY в том же столбце. После преобразования всех значений используйте Alter table
Вы можете перейти по следующей ссылке: преобразование NVARCHAR (255) в DATE