无法获得正确的SQL Server列数

时间:2011-02-28 03:58:04

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

我已经将一个表导入到我的数据库中,并获取列数并将其分配给我做的变量

SELECT @HowManyColumns = COUNT(COLUMN_NAME) 
  FROM INFORMATION_SCHEMA.COLUMNS 
 WHERE (TABLE_NAME = @table_name )

但它一直告诉计数是0!

如果我对其他表做同样的事情就行了!

我发现无法工作的表的列数超过40列,为什么它不起作用... The data is this

3 个答案:

答案 0 :(得分:3)

由于不存在没有列的表,这只能表示不满足WHERE子句。换句话说,名为@table_name的值的表不存在。既然你说“有时它可以工作,有些则不会”会立即指向区分大小写的部署。确保始终使用正确的表名,并使用正确的大小写,以便您的代码在使用区分大小写的排序规则部署的服务器上正常工作。

答案 1 :(得分:1)

尝试发行      SELECT DISTINCT TABLE_NAME      FROM INFORMATION_SCHEMA

并检查案例名称。

答案 2 :(得分:1)

尝试将表名作为文本字符串:

DECLARE 
    @table_name varchar(50),
    @noOfColumns int
SET 
    @table_name = 'table_name'
SET
    @noOfColumns =
        (SELECT count(*)
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = @table_name)

PRINT @noOfColumns

你得到的答案是@noOfColumns变量中的列数