我可以通过第一列使用where语句吗?

时间:2012-06-04 15:07:39

标签: sql-server sql-server-2008 sql-server-2005

  

可能重复:
  Is it possible to select sql server data using column ordinal position

不确定标题是否有帮助,但我正在尝试创建一个通用函数,我想知道我是否可以在WHERE语句中使用列位置而不是列名。例如,

SELECT * FROM table WHERE myID=1

会变成这样的东西

SELECT * FROM table WHERE [0]=1

这有意义吗?它可行吗?多谢你们。

BTW - 使用MSSQL 2005-2008

2 个答案:

答案 0 :(得分:1)

我认为您必须获取列位置的列名并使用列名生成执行查询。 下面的代码可以帮助您获取列位置的列名并执行您的查询:

Declare @TableName  VarChar(100)
Declare @ColumnPosition int

Set @TableName = 'Table1'
Set @ColumnPosition = 1

Declare @ColumnName VarChar(250)
SELECT @ColumnName  = COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName and ORDINAL_POSITIO = @ColumnPosition

Declare @Query VarChar(250)
Set @Query = 'Select * From ' + @TableName + ' Where '+ @ColumnName + ' = 1'
Exec (@Query)

答案 1 :(得分:0)

我认为这是不可能的,但您可以在字符串中动态创建查询并使用EXEC运行它。

    DECLARE @query VARCHAR(100)
    SET @query = 'SELECT * FROM Table WHERE field = ' + CONVERT(VARCHAR(10), 100)
    EXEC (@query)