2

我正在运行 SQL Server 2008 并且必须加载没有计算列的表,即类似于

从 MY_TABLE 中选择(所有没有计算的列)

这样做有可能吗?如果我需要从加载中取消选择计算列,还有什么其他解决方法?

4

1 回答 1

2

看看使用syscolumns和动态 sql 中的 iscomputed 列怎么样?

iscomputed (int)

Flag indicating whether the column is computed: 

0 = Noncomputed.

1 = Computed.

就像是

CREATE TABLE TADA(
  A INT,
  B INT,
  C AS (A+B)
 );
INSERT INTO TADA (A,B) VALUES (1,2);

DECLARE @TableName VARCHAR(500) = 'TADA'
DECLARE @ColumnNames VARCHAR(MAX)


SELECT @ColumnNames = COALESCE(@ColumnNames + ',','') + col.name
FROM sysobjects obj 
INNER JOIN syscolumns col ON obj.id = col.id 
WHERE obj.name = @TableName
AND col.iscomputed = 0

EXEC ('SELECT ' + @ColumnNames + ' FROM ' + @TableName)

SQL 小提琴演示

于 2013-07-18T08:26:36.990 回答