应用场景是这样的,view中有一个来自某个函数的结果,函数返回的是varchar(max),但create view时,我只想要varchar(20)即可,能否指定? 例子如下,somefunction(t.C2)返回值为varchar(max),但我想让VTable的C2列类型为varchar(20):create view [dbo].[VTable] 
as 
  select t.C1 as C1
,somefunction(t.C2) as C2
,t.C3 as C3
from TTable t

解决方案 »

  1.   

    create view [dbo].[VTable]  
    as  
      select t.C1 as C1
    ,cast(dbo.somefunction(t.C2) as varchar(20)) as C2
    ,t.C3 as C3
    from TTable t
      

  2.   

    create view [dbo].[VTable]  
    as  
    select t.C1 as C1
        ,cast(dbo.somefunction(t.C2) as varchar(20)) as C2
        ,t.C3 as C3
    from TTable t
      

  3.   

    两位兄弟,非常感谢!
    但是用cast,CPU开销会不会太大啊?