代码之家  ›  专栏  ›  技术社区  ›  finnsson

如何确定(运行时)t-sql中的类型是否为固定长度?

  •  1
  • finnsson  · 技术社区  · 15 年前

    DECLARE @foo SOMETYPE(LENGTH) DECLARE @foo SOMETYPE

    sys.all_columns.max_length = sys.types.max_length 如果是的话,假设它是固定长度的(因为 max_length 似乎有一个特殊的代码(-1),至少对于nvarchar是这样。

    2 回复  |  直到 15 年前
        1
  •  1
  •   cmsjr    15 年前

    您可以查看schema.columns中的信息。如果字符类型的列具有最大长度,它将在字符\u最大长度中指定,则数字字段的精度将在数字精度中定义。请注意,据我所知,int类型始终为4字节,而且,根据定义,任何var类型都不是固定长度的,并且只存储最大长度,如果nvarchar(10)包含2个字符的字符串,则它只存储2个字符。因此,要检测固定长度的字符串,您需要查找char或nchar类型。

        2
  •  0
  •   Bryan    15 年前

    是的,有可能。查看内置存储的proc sp_列的代码,了解如何执行此操作。