sp_columns的数据类型与表设计器中的typename/data_type: ntext与nvarchar(MAX)有何区别?

3
在管理工作室表设计师中,我的表是nvarchar(MAX),但在sp_columns中,它说TYPE_NAME=ntextDATA_TYPE=-10
哪一个是正确的?(我想避免将来的兼容性问题)

我认为这与 nvarchar 相同,同样适用于将 text 转换为 varchar - LONG
@scsimon - 是的,我知道这一点,这也是为什么我在这里问的原因。 :) 我想要100%确定我在使用nvarchar而不是ntext。我应该相信sp_columns还是Management Studio? - Sean
我无法在SQL Server 2016上复制这个。我创建了一个包含ntext和nvarchar(max)的表。表设计师也反映了这一点,在sys.columns中看起来正确。select c.name ,c.system_type_id ,ty.name ,ty.precision ,t.name from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.types ty on ty.system_type_id = c.system_type_id where t.name = 'deleteTable' - S3S
我正在使用2014版。虽然我刚刚检查了2016版,但它的行为是相同的。 - Sean
我看到@SeanLange的评论时也有同样的感觉。 - S3S
显示剩余8条评论
1个回答

2

有时候,sp_columns过程会返回一些奇怪的信息。我更喜欢直接查看sys.columns中的列,因为这里定义了列的定义。

很容易复制您的示例并证明它实际上是nvarchar(max)。

create table TextTest
(
    VarCharCol nvarchar(max)
    , NTextCol ntext
)

go

exec sp_columns 'TextTest'

select ColumnName = c.name
    , ColumnDataType = t.name 
from sys.columns c
join sys.systypes t on t.xusertype = c.user_type_id
where object_id = OBJECT_ID('TextTest')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接