可以为视图定义列类型和大小吗?

时间:2013-03-07 06:29:05

标签: sql sql-server sql-server-2008 tsql sql-view

我正在通过C#导入一些数据时让我的生活更轻松,如果我可以在SQL端进行所有转换和转换(以及设置正确的列长度),那将节省大量时间。不是在C#中(因为我的C#代码都是动态的,不是硬编码的,而且当东西不是正确的长度时它会掉下来)。这或多或少是我正在做的非常小的规模:

CREATE VIEW vw_pendingitems
AS
   SELECT 
      CAST(a.columnone AS CHAR(1)) 'Column 1', 
      CAST(a.columntwo AS CHAR(1)) 'Column 2', 
      CAST(a.adecimalcolumn AS VARCHAR(30)), 
      CAST(null AS VARCHAR(20)) 'A not yet defined column',
      b.anintcolumn 'An int column'
FROM table1 a
JOIN table2 b ON a.key = b.key

前两列工作正常,但我认为当我抛出null时我遇到了问题。有没有其他/更好的方法来做我想要完成的事情?

1 个答案:

答案 0 :(得分:1)

CAST应该可以使用可为空的列正常工作。它只会返回NULL。如果您不想NULL,则可以使用ISNULL

SELECT ISNULL(CAST(NULL AS VARCHAR(20)), '') 'A not yet defined column'

您应该小心更改数据类型。如果使用较小的数据类型,则可能会丢失数据或出错。