MS SQL Server Concepts and Programming Question:

How Column Data Types Are Determined in a View?

MS SQL Server Interview Question
MS SQL Server Interview Question

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


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.


Previous QuestionNext Question
How To Assign New Column Names in a View?How To Bind a View to the Schema of the Underlying Tables?