我有一个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等等。
答案 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'