不确定标题是否有帮助,但我正在尝试创建一个通用函数,我想知道是否可以在 WHERE 语句中使用列位置而不是列名。所以例如
SELECT * FROM table WHERE myID=1
会变成这样
SELECT * FROM table WHERE [0]=1
这有意义吗?可行吗?多谢你们。
顺便说一句 - 使用 MSSQL 2005-2008
不确定标题是否有帮助,但我正在尝试创建一个通用函数,我想知道是否可以在 WHERE 语句中使用列位置而不是列名。所以例如
SELECT * FROM table WHERE myID=1
会变成这样
SELECT * FROM table WHERE [0]=1
这有意义吗?可行吗?多谢你们。
顺便说一句 - 使用 MSSQL 2005-2008
I think you must get column name of column position and generate execute query with column name. below code help you to get column name of column position and Execute your Query:
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)
我认为这是不可能的,但您可以在字符串中动态创建查询并使用 EXEC 运行它。
DECLARE @query VARCHAR(100)
SET @query = 'SELECT * FROM Table WHERE field = ' + CONVERT(VARCHAR(10), 100)
EXEC (@query)