可能重复:
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
答案 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)