查看视图的字段的数据类型

 postgresql

SELECT
	ordinal_position,
	TABLE_NAME,
	COLUMN_NAME ,
	CASE
WHEN data_type = 'character varying'
AND character_maximum_length IS NOT NULL THEN
	'varchar' || '(' || character_maximum_length || ')'
WHEN data_type = 'timestamp without time zone' THEN
	'timestamp'
WHEN data_type = 'character varying' THEN
	'varchar(4000)'
ELSE
	data_type
END data_type 
FROM
	information_schema. COLUMNS T
WHERE
	UPPER (TABLE_NAME) = UPPER ('vw_name') order by ordinal_position asc;

  

  

 SQLServer 

  

SELECT
  C.colorder,
	T.NAME AS ColumnsType,
	C.NAME AS ColumnsName,
	CASE
WHEN (
	T.NAME = 'varchar'
	OR T.NAME = 'nvarchar'
)
AND C.length < 0 THEN
	T.NAME + '(4000)'
WHEN T.NAME = 'varchar'
OR T.NAME = 'nvarchar' THEN
	T.NAME + '(' + CAST (C.length AS VARCHAR) + ')'
ELSE
	T.NAME
END type
FROM
	SysObjects AS o,
	SysColumns AS C,
	SysTypes AS T
WHERE
	o.TYPE IN ('u', 'v')
AND o.ID = C.ID
AND C.xtype = T.xtype
AND T.NAME != 'sysname'
AND UPPER (o.NAME) = UPPER ('VW_project') order by C.colorder asc

  

oracle

   SELECT
    column_id,
    table_name,
    column_name,
 
    CASE
WHEN DATA_TYPE = 'NVARCHAR2'
OR DATA_TYPE = 'CHAR' THEN
    DATA_TYPE || '(' || DATA_LENGTH || ')'
WHEN DATA_TYPE = 'NUMBER'
AND DATA_LENGTH = 22 THEN
    'INTEGER'
ELSE
    DATA_TYPE
END DATA_TYPE
FROM
    user_tab_cols t
WHERE
    UPPER (table_name) = UPPER ('vw_name');

  

  

  

posted @ 2017-01-04 14:40  天之涯0204  阅读(2532)  评论(0编辑  收藏  举报