将列数据类型从Int更改为Ntext,反之亦然

时间:2010-09-12 11:14:40

标签: sql-server

我有一个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来做到这一点?

1 个答案:

答案 0 :(得分:2)

您正尝试进行disallowed from int to ntext的隐式转换。为什么,我不知道,但我猜是因为它是2步(int-> string,string-> LOB)。

另外,不要使用ntext。它被弃用了。使用nvarchar(max)应该允许隐式转换。

最后,如果ID是主键,那么为什么要使用LOB类型呢?你有一个主键......?