2010-07-17 171 views
1

我在写一个基本的DBMS包,并试图检索列长度。这是我使用的检索信息来源查询:SQL Server:检索数据类型长度

SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH 
FROM INFORMATION_SCHEMA.Columns 
WHERE TABLE_NAME = 'testVariables' 

这工作得很好,除了CHARACTER_MAXIMUM_LENGTH没有问题返回-1所有的时间,当我使用SQL Management Studio中,它说柱长度为16 .. 。

任何想法?

干杯, 乔尔

+0

你是否与同一用户连接? – 2010-07-17 11:07:40

+0

我没有看到任何问题 - 对于VARCHAR列,它确实返回适当的长度。你在找什么? INT,DATETIME等字段没有最大长度 - 它们的长度是给定的,由它们的类型定义 – 2010-07-17 11:17:46

回答

1

看看看看书在线,你会发现,值-1 CHARACTER_MAXIMUM_LENGTH意味着数据类型是大值类型为XML。

See COLUMNS

+0

您好,感谢您的回答。我在研究为什么会出错时读到,但它应该返回值16,因为列是nVarchar(16) - 或者我是厚的? 干杯, Joel – JHarley1 2010-07-17 11:04:33

+0

我刚创建了一个列nVarchar(16)的测试表,它显示正确。你确定你在正确的数据库上下文吗?或者在不同的模式中没有这个名字的两个表? – 2010-07-17 11:10:18

+0

或数据类型是一个INT,DATETIME等 - 只是这不是(N)VARCHAR,也不(N)CHAR – 2010-07-17 11:18:27