【问题标题】:Microsoft SQL Server INFORMATION_SCHEMA.COLUMNS CHARACTER_MAXIMUM_LENGTH is NULL for numeric typesMicrosoft SQL Server INFORMATION_SCHEMA.COLUMNS CHARACTER_MAXIMUM_LENGTH 对于数字类型为 NULL
【发布时间】:2013-03-04 19:25:25
【问题描述】:

我想在INFORMATION_SCHEMA.COLUMNS 上进行选择以获取数字列的大小。我可以看到大小是在 Microsoft SQL Server Management Studio 的属性中设置的,但INFORMATION_SCHEMA.COLUMNS 没有此信息。是否有其他表格可以让我获得数字列的这些信息?

例如,我有一列定义为INT,大小为4,但INFORMATION_SCHEMA.COLUMNS CHARACTER_MAXIMUM_LENGTHNULL

如何在 select 语句中获得这个大小?

【问题讨论】:

  • 尝试改用sys.columns - 在这种情况下,INT 列显示为 4 的 max_length

标签: tsql information-schema


【解决方案1】:

如果您想坚持使用INFORMATION_SCHEMA.COLUMNS,那么您将不得不从基于整数的列的数据类型推断它:

SELECT COLUMN_NAME,
    DATA_TYPE,
    COALESCE(CHARACTER_MAXIMUM_LENGTH, 
        (Select Length From sys.systypes s Where s.name = c.DATA_TYPE)
        ) As Max_Len
FROM    INFORMATION_SCHEMA.COLUMNS c

您必须对其他一些类型(如 NUMERIC、DECIMAL 等)做额外的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多