我有一个SQL表:
CREATE TABLE [UserTable]
(
[ID] [int] NULL,
[Name] [nvarchar](50) NULL,
[City] [nvarchar](50) NULL
) ON [PRIMARY]
在此表中,ID列的数据类型为int
。我想将ID列的数据类型更改为Ntext
。
为此,我使用以下Sql Query:
ALTER TABLE UserTable
ALTER COLUMN ID NTEXT
此查询提供以下错误消息:
Msg 206,Level 16,State 2,Line 1 操作数类型冲突:int是 与ntext不兼容
当我将ID列数据类型从 Int更改为navarchar 时,它可以正常工作。
之后,我尝试更改 ID (现在Id列的数据类型为Nvarchar) Ntext 的列数据类型更改查询它成功地改变了 ID 列数据类型。
为什么我们不能直接将列数据类型改为Int到Ntext,而我们可以在Nvarchar到Ntext之后通过INT到Nvarchar来做到这一点?
答案 0 :(得分:2)
您正尝试进行disallowed from int to ntext的隐式转换。为什么,我不知道,但我猜是因为它是2步(int-> string,string-> LOB)。
另外,不要使用ntext。它被弃用了。使用nvarchar(max)应该允许隐式转换。
最后,如果ID是主键,那么为什么要使用LOB类型呢?你做有一个主键......?