获取具有数据类型和最大长度的SQL表列模式的数值

时间:2018-04-01 09:02:05

标签: sql sql-server sql-server-2008 schema

我有一个Table_A,列名和数据类型如下:

QUANTITY    int
PO_NO       varchar(13)
FLG         char(1)
AMOUNT       money

我想创建返回结果的查询:

QUANTITY    TYPE="3"    LENGHT="4"
PO_NO       TYPE="200"  LENGHT="13"
FLG         TYPE="129"  LENGHT="1"
AMOUNT      TYPE="6"    LENGTH="8"

我使用此查询来获取列架构,但结果与我的预期不一样

select COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH       
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='Table_A'

结果:

COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH  
QUANTITY    int         NULL
PO_NO       varchar     13
FLG         char        1
AMOUNT      money       NULL

所以,我的问题是:如何知道数据类型int等效于Type = 3和length = 4等等。

1 个答案:

答案 0 :(得分:1)

确实int,mother和其他非字符串数据类型都有fidex定义的长度,你无法在列CHARACTER_MAXIMUM_LENGTH中找到合适的值 如果你需要,你可以用CASE WHEN重新映射

select COLUMN_NAME
        , DATA_TYPE
        , CASE DATA_TYPE 
            WHEN 'int' THEN 4 
            WHEN 'money' THEN 8  
            ELSE CHARACTER_MAXIMUM_LENGTH 
          END
        , CHARACTER_MAXIMUM_LENGTH       
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='Table_A'