1

在通过 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

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

4

1 回答 1

1

ACAST应该适用于可为空的列。它只会返回NULL。如果你不想要NULL,那么你可以使用ISNULL.

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

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

于 2013-03-07T06:56:18.727 回答