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