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');