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 に変換できます。すべての値を変換した後、テーブルの変更を使用します

次のリンクを参照してください: Converting NVARCHAR(255) to DATE

于 2013-01-13T17:00:05.210 に答える