生成SQL大小的数据类型

时间:2017-02-10 07:01:45

标签: sql sql-server tsql

我正在编写sql查询,我需要数据类型,其长度类似intnvarchar(250)decimal(16,2),这是在表列中定义的,我如何在sql中生成它。 我已经尝试过这个查询,但它不满足所有数据类型

SELECT DATA_TYPE+
CASE WHEN CHARACTER_MAXIMUM_LENGTH IS NOT NULL THEN 
'('+CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR(20))+')' ELSE '' 
END
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'User';

它没有给出小数和其他的精确结果。

1 个答案:

答案 0 :(得分:3)

列大小存储在不同的字段中。试试这个:

SELECT CASE WHEN DATA_TYPE LIKE '%char'  THEN DATA_TYPE + '(' + COALESCE(CAST(NULLIF(CHARACTER_MAXIMUM_LENGTH, -1) AS VARCHAR(20)), 'max') + ')'
            WHEN DATA_TYPE IN ('decimal', 'numeric') THEN DATA_TYPE + '(' + CAST(NUMERIC_PRECISION AS VARCHAR(20)) + ',' + CAST(NUMERIC_SCALE AS VARCHAR(20)) + ')'
            WHEN DATA_TYPE IN ('datetime2')  THEN DATA_TYPE + '(' + CAST(DATETIME_PRECISION AS VARCHAR(20)) + ')' 
            ELSE DATA_TYPE
            END AS Data_Type
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'User';