【发布时间】:2013-05-04 23:49:02
【问题描述】:
我的表名是@Table_Name
我的列值为@Value,但没有列名(但存在于第一个位置,可以是 Seek_id 或 prov_id ...我必须将我的值与此 id 进行比较)
如何比较该表的列名值?
我想要类似的东西
SELECT * FROM @Table_Name
WHERE Table.Column[1].Value = @Value
例如@Table_Name = bb_match 和@Value = 6
【问题讨论】:
-
你不能这样做 - SQL Server 需要一个列名 - 它不能使用序数位置来引用表中的列
-
你可以使用一些动态SQL查询sys.columns来找到第一列
-
您可以使用 INFORMATION_SCHEMA.COLUMNS 表中的 ordinal_position 字段来查找给定表的第一列。
-
这接近我的解决方案但不显示值只显示该行的列名..(由我的朋友发送):
-
DECLARE @column_name varchar(20) set *column_name = (SELECT top 1 column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'bb_match') select * from bb_match where *column_name = '8' (*=@ )
标签: sql sql-server stored-procedures sysobjects