如何在SQL Server 2005中查找视图的派生列类型?

bri*_*ler 7 t-sql sql-server-2005

例如,假设我有一个视图:

CREATE VIEW [dbo].[PaymentSchedule_vw]
AS
    SELECT
         [Order].Id                [Order Id]
        ,[PaymentSchedule].Date    [Payment Date]
    FROM
        _Order123 [Order]
        INNER JOIN
            _Order123_Shedule [PaymentSchedule]
            ON
            [Order].Id = [PaymentSchedule].OrderId

GO
Run Code Online (Sandbox Code Playgroud)

如何寻找的类型[Order Id][Payment Date]

Mar*_*ith 11

SELECT c.name,
       t.name,
       c.max_length,
       c.precision,
       c.scale
FROM   sys.columns c
       JOIN sys.types t
         ON t.user_type_id = c.user_type_id
            AND t.system_type_id = c.system_type_id
WHERE  object_id = OBJECT_ID('PaymentSchedule_vw')  
Run Code Online (Sandbox Code Playgroud)

或者你可以使用SQL_VARIANT_PROPERTY- 这里的一些例子.


t-c*_*.dk 6

SELECT top 1
       SQL_VARIANT_PROPERTY([Order Id], 'BaseType') OrderIdBaseType,
       SQL_VARIANT_PROPERTY([Payment Date], 'BaseType') PaymentDateBaseType
FROM [PaymentSchedule_vw] 
Run Code Online (Sandbox Code Playgroud)

您应该检查以下属性:

SQL_VARIANT_PROPERTY(<column>, 'BaseType'), 
SQL_VARIANT_PROPERTY(<column>, 'Precision'), 
SQL_VARIANT_PROPERTY(<column>, 'Scale'), 
SQL_VARIANT_PROPERTY(<column>, 'MaxLength') 
Run Code Online (Sandbox Code Playgroud)

使用SQL_VARIANT_PROPERTY的Advanage是它也可以用于计算列和表达式