这是样本数据表。
我想在列名中选择任意行或任何列(等于)= 200的值。但我们不知道列名。
答案 0 :(得分:3)
如果您知道表名,则可以使用SQLServer 2005或更高版本查询INFORMATION_SCHEMA.TABLES
和INFORMATION_SCHEMA.COLUMNS
,或者使用SQLServer查询sysobjects
和syscolumns
2000检索表列,之后您可以根据需要创建完全引用的查询
答案 1 :(得分:1)
我认为下面的T-SQL可以满足您的需求。它是针对AdventureWorks2012LT编写的。将来,您可以通过在问题中包含SQL create语句来获得更具体的帮助(因此响应者不必重新创建表) (顺便说一句,我的例子是寻找包含字母' S')
的任何字段DECLARE @column_name nvarchar(200);
DECLARE @statement nvarchar(max);
DECLARE @results TABLE(
id int,
colname nvarchar(200),
value nvarchar(max)
)
DECLARE col_cursor CURSOR FOR
SELECT C.COLUMN_NAME AS col
FROM INFORMATION_SCHEMA.COLUMNS C WHERE C.TABLE_NAME LIKE 'Address'
OPEN col_cursor
FETCH NEXT FROM col_cursor INTO @column_name
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @column_name
SELECT @statement = N'SELECT AddressID, ''' + @column_name + ''' AS ColName, ' + @column_name + ' AS value FROM SalesLT.[Address] WHERE ' + @column_name + ' LIKE ''%S%''';
INSERT INTO @results
EXEC(@statement);
FETCH NEXT FROM col_cursor INTO @column_name
END
CLOSE col_cursor
DEALLOCATE col_cursor
SELECT * FROM @results