MS SQL Server Concepts and Programming Question:
How Column Data Types Are Determined in a View?

Answers:
Answer #1
When you define a view, its columns are defined through a list of expressions in the underlying SELECT statement. Their data types will be determined implicitly by the expressions.
For example, if the column expression is a column name of a underlying table, the data type of the view column will be the same of the underlying table column.
If the column expression is a function, the data type of the view column will be the function return data type.
If the column expression is an operation, the data type of the view column will be the expression result data type.
The following tutorial exercise shows you some examples of view column data types:
DROP VIEW ggl_links_view;
GO
CREATE VIEW ggl_links_view (ID, DateString, CountUrl) AS
SELECT id, CONVERT(VARCHAR(16), created, 107),
CONVERT(VARCHAR(20),counts)+' - '+url
FROM ggl_links WHERE counts > 1000
GO
When you define a view, its columns are defined through a list of expressions in the underlying SELECT statement. Their data types will be determined implicitly by the expressions.
For example, if the column expression is a column name of a underlying table, the data type of the view column will be the same of the underlying table column.
If the column expression is a function, the data type of the view column will be the function return data type.
If the column expression is an operation, the data type of the view column will be the expression result data type.
The following tutorial exercise shows you some examples of view column data types:
DROP VIEW ggl_links_view;
GO
CREATE VIEW ggl_links_view (ID, DateString, CountUrl) AS
SELECT id, CONVERT(VARCHAR(16), created, 107),
CONVERT(VARCHAR(20),counts)+' - '+url
FROM ggl_links WHERE counts > 1000
GO
Answer #2
SELECT TOP 3 * FROM ggl_links_view;
GO
<pre>ID DateString CountUrl
------ ------------- ---------------------------------------
7600 Jun 06, 1891 237946 - eyfndw jdt lee ztejeyx l q
19437 May 30, 1833 222337 - eypx u x
55924 Dec 29, 1956 1877 - eyq ntohxe i rtnlu riwaskzp c
EXEC SP_HELP ggl_links_view;
GO
Column_name Type Length Prec Scale
------------ -------- ----------- ----- -----
ID int 4 10 0
DateString varchar 16
CountUrl varchar 103</pre>
In view, ggl_links_view, defined in this exercise:
* Column "ID" has a data type INT, same as the data type of "id" in the underlying table.
* Column "DateString" has a data type of VARCHAR(16), returned by the CONVERT() function.
* Column "CountUlr" has a data type of VARCHAR(103), returned by the concatenation operations.
SELECT TOP 3 * FROM ggl_links_view;
GO
<pre>ID DateString CountUrl
------ ------------- ---------------------------------------
7600 Jun 06, 1891 237946 - eyfndw jdt lee ztejeyx l q
19437 May 30, 1833 222337 - eypx u x
55924 Dec 29, 1956 1877 - eyq ntohxe i rtnlu riwaskzp c
EXEC SP_HELP ggl_links_view;
GO
Column_name Type Length Prec Scale
------------ -------- ----------- ----- -----
ID int 4 10 0
DateString varchar 16
CountUrl varchar 103</pre>
In view, ggl_links_view, defined in this exercise:
* Column "ID" has a data type INT, same as the data type of "id" in the underlying table.
* Column "DateString" has a data type of VARCHAR(16), returned by the CONVERT() function.
* Column "CountUlr" has a data type of VARCHAR(103), returned by the concatenation operations.
Previous Question | Next Question |
How To Assign New Column Names in a View? | How To Bind a View to the Schema of the Underlying Tables? |